gpt4 book ai didi

java - 如何调用未知对象的方法

转载 作者:行者123 更新时间:2023-11-30 08:40:58 25 4
gpt4 key购买 nike

我想用 java 反射做一些不同的事情。当从浏览器打开 applet 时,我编写的程序将全局监听器添加到 java 组件。一个事件被触发,我得到了事件源对象。在这里我不知道该对象引用的实际类名。

if(object.getClass.getName().contains("oracle.ewt.laf.basic.BasicTabBarUI$Menu"))
{
// here we can invoke methods,fields,etc using reflection
}

我可以通过反射调用 BasicTabBarUI$Menu 类的方法。

假设现在我在上面的 if block 中有以下几行

LWMenuItem menuItem = (LWMenuItem)object;
menuItem.getLabel());

我不想指定 LWMenuItem 类名,而是想调用它的方法 getLabel()。如果我们知道类名,我们可以像上面那样做。但是我们怎样才能对反射做同样的事情。我们如何在反射中进行转换?

最佳答案

除了调用方法的结果外,您不需要进行强制转换。只需使用对象的 Class 对象,它有一个 getMethod method这将返回 Method object对于你想要的方法,然后调用它:

Class cls = object.getClass();
Method getLabel = cls.getMethod("getLabel", null);
String label = (String)getLabel.invoke(object, null);

关于java - 如何调用未知对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35356298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com