簡體   English   中英

Java:通過反射調用第二類的方法

[英]Java: Method call of a second class via reflection

我有一個關於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庫。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM