다음은 Java 1.5에서 테스트 한 샘플 프로그램입니다.내부 클래스에 반영 할 때 예외가 발생합니다.
아래의 두 가지 접근 방식이 다른 결과를 보이는 이유가 궁금합니다. 버그인가, Java의 일종인가?
package test;
public class TestOut {
public static void main(String[] args) {
// works
new TestIn();
// throws IllegalAccessException
Class.forName("test.TestOut$TestIn").newInstance();
}
private static class TestIn {
}
}
어떻게'new'가 명시 적으로'private'에도 작동합니까? – polygenelubricants
리플렉션은 컨텍스트를 제거하고 컨텍스트는 내부 클래스가 외부에 속하기 때문에 생각합니다. Class 객체 자체는 포함하는 클래스에 대한 참조를 유지하지만 생성자는 포함하지 않습니다. – Bozho
3x, Bozho. "문맥"은 내가 정말로 궁금해하는 것이다. IMHO, 생성자는 클래스를 알기에 충분한 정보를 가지고 있어야하며 이런 식으로 구현해야 할 정당한 이유가없는 것 같습니다. – MikeJiang