Java:通过反射的第二类方法调用
问题描述:
我有一个关于Java中的反射的问题。Java:通过反射的第二类方法调用
如下问题: 根据配置我想打电话给通过反射的方法,但不是唯一的一类CLASS_A的,但也从一个类CLASS_B由CLASS_A引用。
但我想总是只使用类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是您如何使用它的一个很好的例子。
+0
感谢您的链接。这正是我需要的。我只是好奇,是否可以通过反射来调用“嵌套”方法。 – user2031986
我怀疑你可以通过反射来做到这一点。你在这里需要什么反思? –
好吧,在实现时我认为使用反射会很聪明(这只是一个简单的例子)。 但是你是对的,在这种情况下,我不需要反思......我只是感兴趣,不管它是否可能。 – user2031986
你可以检查BeanUtils as bhdrkn提到的。它可能会做类似的工作。 –