将bean声明为field - 使用Reflection的值

时间:2013-11-22 15:02:02

标签: java reflection

我的要求是从我的bean获取值并将其设置为我的XML。

使用反射我在Map中获取了所有方法名称..并在myClass.getMethod("getProposerName", new Class[] {})内传递方法名称并获取值。我的输入将是TestBean实例作为参数使用该实例我必须获取所有值

执行方法

public void executeMethod(Class<?> className)  //where i get instance of TestBean
{
    Class<?>  myClass = Class.forName(className.getName()); ////I pass as argument
    Object instance = myClass.newInstance();
    Method method = myClass.getMethod("Pass my method name", new Class[] {}); //Pass my methodname i.e getProposerName
    String Value= (String) method.invoke(instance , new Object[] {}); // Here i get my proposer name of class 
}

policyname的值设置如下

TestBean instance =  new  TestBean();
instance.setProposerName("Jack");
instance.getDeclaredBean.setPolicyName("Accident Policy"); // Note : This is problem how to maintain the reference of TestBean to get accident Policy in above execution method

我有上面这段代码可以帮助我从TestBean获取值,但我的问题是DeclaredBean值,这是TestBean中的字段类型。使用上面的执行方法帮我这里..

我使用这种执行方法提取了n个类值。以下是我的两个班级。

TestBean.java

public class TestBean 
{
    private String proposerName;

    public DeclaredBean declaredBean;

    public TestBean() {
        super();
    } 

    public String getProposerName() {
        return proposerName;
    }

    public DeclaredBean getDeclaredBean() {
        return declaredBean;
    }

    public void setDeclaredBean(DeclaredBean declaredBean){
        this.declaredBean = declaredBean;
    }

    public void setProposerName(String proposerName) {
        this.proposerName = proposerName;
    }
}

DeclaredBean.java

public class DeclaredBean 
{
    private String policyName;

    public DeclaredBean() {
        super();
    }

    public String getPolicyName() {
        return policyName;
    }

    public void setPolicyName(String policyName) { // Access this method in my execute method
        this.policyName = policyName;  
    }   
}

1 个答案:

答案 0 :(得分:1)

这个问题本身就让人感到困惑,但我想(并且猜测我的意思是猜测)你试图在一个对象中获取一个字段的值而不知道如何访问它。在这种情况下,请查看Apache Commons BeanUtils(尤其是BeanUtils.get * Property()方法)。

另一方面,如果您只需要将对象序列化为XML,那么您应该查看可以帮助您完成此操作的API(例如JAXB),而不是编写自己的代码。