从无法使用其getter设置程序的其他应用程序调用私有实例变量

时间:2019-03-01 15:50:37

标签: java reflection

我正在使用JAXB从项目中的其他应用程序中读取字符串xml数据。

他们提供了他们的appdata.jar。 (我无法控制他们的课程)。 他们有MessgeBody。在MessageBody中,他们定义了一个私有实例变量,而没有getter和setter。由于这个原因,我无法获得perticular类的实例.getter n setter的其余字段是可访问的。 我尝试了Java Reflection,但无法正常工作。 这是我的代码-

Class Test{

public void parseXMLStr(){
 String xmlStr="<xml><first></first><second></second><third></third></xml>"

 //I am able to get values of first and second as getter and setter defined.  
   First f =getMessageBody().getFirst();
   f.dosomething()..  //working
   Second s =getMessageBody().getSecond();
   s.dosomething()...//working
}

appdata.jar(其他应用程序)包含MessageBody,

 class MessageBody{
  private First first;//getter setter provided
  private Second second;//getter setter provided
  private Third third;//getter setter NOT Provided
}

如何获取第三类实例并在其中访问变量。

我尝试如下进行Java反射,但是我得到了空指针异常(尽管有数据)

   Field f = obj.getClass().getDeclaredField("third"); 
   f.setAccessible(true);
   Third t = (Third) f.get(obj); 
   t.getName();//here getting nullpointer exception 

0 个答案:

没有答案