Anu*_*Dey 4 java reflection java.lang.class
这是我编写的一个小代码,用于在运行时检查(它是否称为反射API?不确定)类,但是我没有得到预期的结果.这是代码:
public class Outer {
public Outer(){
System.out.println("Outer Class");
}
public class Inner {
public Inner(){
System.out.println("Inner Class");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这里还有我编写的用于运行代码并测试它的主要功能......
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!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
测试失败,出现以下错误:
if(objTyp.getClass()== Outer.Inner.class){^其中CAP#1是一个新的类型变量:CAP#1从捕获中扩展Class?扩展了Class 1错误
请帮我纠正代码.我错过了什么?谢谢.
您比较Outer.Inner.class有objTyp.getClass()代替objTyp.
objTyp是类型的Class<Outer.Inner>.objTyp.getClass()是类型的Class<Class<Outer.Inner>>.Outer.Inner.class是类的文字Class<Outer.Inner>.因此,objTyp.getClass()没有机会平等Outer.Inner.class.
Outer outObj = new Outer();
Outer.Inner inObj = outObj.new Inner();
// Using Reflection
Class objTyp = inObj.getClass();
System.out.println(objTyp.getName());
// >>>>> objTyp is already inObj.getClass() <<<<<<
if(objTyp.getClass() == Outer.Inner.class){
System.out.println("Match classes!");
}else{
System.out.println("Mismatch classes!");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |