java中getClass的问题,在线等
java文件中
public class TestDemo extends Date {
public static void main(String[] args) {
new TestDemo().test();
}
public void test() {
System.out.println(this.getClass().getClass
().getName());
}
}
现问:1 System.out.println(this.getClass().getClass().getName());
这为什么输出 java.lang.Class
2System.out.println(this.getClass().getName()); 这为什么输出 basic.day02.TestDemo
thanks
------解决方案--------------------this.getClass() ==> 代表了TestDemo的Class定义,也就是类型是Class,但其内容是TestDemo。
this.getClass().getClass() ==> 代表了Class的Class定义,也就是类型是Class,内容也是Class自身的。
打个不恰当的比喻:
一个库房管理员,用记事本记录所有的存货;
那么如果存货是一批记事本呢,用什么来记录啊?当然还是记事本。。。
------解决方案--------------------this.getClass() 是指 TestDemo 的Class对象。
this.getClass().getClass() 是指Class对象的Class对象
------解决方案--------------------
------解决方案--------------------不要挑 == 的毛病,就是表示一下,明白就行
------解决方案--------------------
------解决方案--------------------1、
System.out.println(this.getClass().getClass().getName());
this:
当前对象,即new出来的TestDemo的对象
this.getClass():
此对象对应的类型,即TestDemo类型
this.getClass().getClass():
TestDemo类型所对应的类型,TestDemo继承自Object,调用Object的getClass方法返回Class类型
this.getClass().getClass().getName():
java.lang.Class
2、不在絫述
建议多读读API