2014-03-28 3 views
0

패키지 1에는 비공개 클래스 A가 있습니다. 패키지 2의 다른 클래스 B에서이 클래스 멤버에 액세스하려고합니다. A 클래스의 인스턴스를 constructor.h를 사용하여 만들었습니다. A 클래스의 필드와 메서드에 액세스 할 수 있습니까?자바 리플렉션을 사용하여 패키지 외부의 비 public 클래스 멤버에 액세스하십시오.

package package1; 
class A 
{ 
Integer i; 
} 

package package2; 
class B 
{ 
public void accessClassA() 
{ 

      Class aClass=Class.forName("package1.A"); 
      Constructor<?> con = aClass.getDeclaredConstructor(); 
      con.setAccessible(true); 
      //code to access fields of class A 

} 
} 

답변

1
  Class aClass=Class.forName("package1.A"); 
      Constructor<?> con = aClass.getDeclaredConstructor(); 
      con.setAccessible(true); 
      Object instance = con.newInstance(); 
      Field intField=aClass.getDeclaredField("i"); 
      intField.setAccessible(true); 
      Integer i=(Integer)intField.get(instance); 
관련 문제