현재 Java 1.5에서 내성 검사 및 주석을 사용하고 있습니다. 부모 추상 클래스가 AbstractClass입니다. 상속 된 클래스는 사용자 정의 @ChildAttribute 주석이있는 속성 (유형 ChildClass)을 가질 수 있습니다.인트로 피싱 (Indrospection)에 의해 부모 클래스에서의 접근을 시도 할 때 불법적 인 접근 예외가 발생했습니다.
모두 @ChildAttribute 인스턴스의 속성을 나열하는 일반적인 방법을 작성하려고합니다.
여기 내 코드가 있습니다.
부모 클래스 :
: 나는 다음과 같은 오류가TestClass test = new TestClass();
test.getChildren()
:
public abstract class AbstractClass {
/** List child attributes (via introspection) */
public final Collection<ChildrenClass> getChildren() {
// Init result
ArrayList<ChildrenClass> result = new ArrayList<ChildrenClass>();
// Loop on fields of current instance
for (Field field : this.getClass().getDeclaredFields()) {
// Is it annotated with @ChildAttribute ?
if (field.getAnnotation(ChildAttribute.class) != null) {
result.add((ChildClass) field.get(this));
}
} // End of loop on fields
return result;
}
}
테스트 구현, 어떤 아이는
public class TestClass extends AbstractClass {
@ChildAttribute protected ChildClass child1 = new ChildClass();
@ChildAttribute protected ChildClass child2 = new ChildClass();
@ChildAttribute protected ChildClass child3 = new ChildClass();
protected String another_attribute = "foo";
}
테스트 자체 속성
IllegalAccessException: Class AbstractClass can not access a member of class TestClass with modifiers "protected"
나는 인트로 스펙 션 액세스가 수정자를 신경 쓰지 않고 개인 멤버들조차도 읽고 쓸 수 있다고했다. 그건 그렇지 않다.
어떻게 이러한 속성 값에 액세스 할 수 있습니까? 당신의 도움에 미리
감사합니다,
라파엘
가벼운 속도! 감사합니다. –