日期:2014-05-20  浏览次数:20662 次

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对象
------解决方案--------------------
探讨
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())……

------解决方案--------------------
不要挑 == 的毛病,就是表示一下,明白就行
------解决方案--------------------
探讨
我弱弱的问一下,Class对象的Class对象,是什么用,有什么含义?
XXX.getClass();方法可以一直调用下去,
XXX.getClass().getClass() == XXX.getClass().getClass().getClass()

------解决方案--------------------
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