Java:通过反射对第二个类进行方法调用



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

以下问题:根据配置,我想通过反射调用方法,但不仅是类CLASS_A,还包括CLASS_A引用的类CLASS_B

但是我想始终只使用类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 库。

这是如何使用它的一个很好的例子。

相关内容

  • 没有找到相关文章

最新更新