gpt4 book ai didi

Java:通过反射调用第二类的方法

转载 作者:行者123 更新时间:2023-12-01 04:52:55 25 4
gpt4 key购买 nike

我有一个关于 Java 反射的问题。

以下问题:根据配置,我想通过反射调用方法,但不仅是类 CLASS_A 的方法,而且还来自 CLASS_A< 引用的类 CLASS_B 的方法/strong>.

但我想始终仅使用类 CLASS_A 来访问该属性。

这是我的意思的一个例子:

public class Foo
{
private String _name;
private Bar _bar;
public Foo(String name, Bar bar)
{
_name = name;
_bar = bar;
}

public String getName()
{
return _name;
}

public Bar getBar()
{
return _name;
}
}

public class Bar
{
private String _name;

public Bar(String name)
{
_name = name;
}

public String getName()
{
return _name;
}
}

我想始终使用类 Foo 的实例调用 getMethod 返回的方法...无论Foo的方法是否有效应该调用或者Bar的方法.

public class Executor
{
public static void main(String[] args)
{
Foo foo = new Foo("fooName", new Bar("barName"));
String attribute = "barName";

Method method = getMethod(Foo.class, attribute);

try
{
System.out.println(String.valueOf(method.invoke(foo, new Object[]{})));
}
catch(Exception ex)
{
ex.printStackTrace();
}
}

private static Method getMethod(Class< ? > clazz, String attribute)
{
try
{
if (attribute.equals("fooName"))
{
return clazz.getDeclaredMethod("getName", new Class[] {});
}
else if (attribute.equals("barName"))
{
//Is that somehow possible?
Method method = clazz.getDeclaredMethod("getBar.getName", new Class[] {});
return method;
}
}
catch (Exception ex)
{
ex.printStackTrace();
}

return null;
}
}

这样的事情可能吗?谢谢!

最佳答案

您可以使用 Apache BeanUtils 库。

Here是一个很好的例子,展示了如何使用它。

关于Java:通过反射调用第二类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14643674/

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