다음은 런타임시 클래스를 리플렉션 API라고 부르는 작은 코드입니다. 그러나 의도 한 결과가 나타나지 않습니다..class == getClass() 테스트가 실패합니다.
public class Outer {
public Outer(){
System.out.println("Outer Class");
}
public class Inner {
public Inner(){
System.out.println("Inner Class");
}
}
}
또한 여기에 내가 코드를 실행하고 테스트하기 위해 쓴 주요 기능은 ... 시험은 다음과 같은 오류와 함께 실패
public class ClassTest {
public static void main(String[] args) {
Outer outObj = new Outer();
Outer.Inner inObj = outObj.new Inner();
// Using Reflection
Class objTyp = inObj.getClass();
System.out.println(objTyp.getName());
//Testing Reflection
if(objTyp.getClass() == Outer.Inner.class){
System.out.println("Match classes!");
}else{
System.out.println("Mismatch classes!");
}
}
}
:
여기에 코드입니다if(objTyp.getClass() == Outer.Inner.class){ ^ where CAP#1 is a fresh type-variable: CAP#1 extends Class from capture of ? extends Class 1 error
코드를 수정하는 데 도움을주십시오. 내가 뭘 놓치고 있니? 감사.
'Outer.Inner.class'와'objType.getClass()'가 아닌'objType'을 비교해야합니다. –
@boxed__l'Outer.Inner.class'는 클래스 리터럴이므로 ==가 작동해야합니다. –
@ArnaudDenoyelle 동의 함 ... getName()은 문자열 리터럴 –