java中getClass的问题,在线等

zgycsmb 2012-08-01 09:10:10
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
...全文
175 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZhangYongjia_ 2012-08-01
  • 打赏
  • 举报
回复
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
MiceRice 2012-08-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
我弱弱的问一下,Class对象的Class对象,是什么用,有什么含义?
XXX.getClass();方法可以一直调用下去,
XXX.getClass().getClass() == XXX.getClass().getClass().getClass()
[/Quote]

Class对象的Class对象,是什么用,有什么含义?
——没什么特定用处,但是这是规范,必须要有;每个类都需要尤其定义,Class就是这个定义,而Class本身又是一个类,所以它也要有定义。


XXX.getClass();方法可以一直调用下去
——当然可以,很多函数都有这种特性,比如:StringBuilder.append().append().append()....
——符合规范的事情,都能持续做


XXX.getClass().getClass() == XXX.getClass().getClass().getClass()
——确实是一样的,而且确实可以用 ==,本质上就是一个对象。
—— XXX.getClass().getClass() == YYY.getClass().getClass()


StringBuilder a = new StringBuilder();
StringBuilder b = a.append("111");
StringBuilder c = a.append("222");
最后: a==b==c


要能理解问题本质,自己用笔弄个图比划比划。
haorengoodman 2012-08-01
  • 打赏
  • 举报
回复
不要挑 == 的毛病,就是表示一下,明白就行
haorengoodman 2012-08-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
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())……
[/Quote]
我弱弱的问一下,Class对象的Class对象,是什么用,有什么含义?
XXX.getClass();方法可以一直调用下去,
XXX.getClass().getClass() == XXX.getClass().getClass().getClass()
Firebirds 2012-08-01
  • 打赏
  • 举报
回复
this.getClass() 是指 TestDemo 的Class对象。
this.getClass().getClass() 是指Class对象的Class对象
MiceRice 2012-08-01
  • 打赏
  • 举报
回复
this.getClass() ==> 代表了TestDemo的Class定义,也就是类型是Class,但其内容是TestDemo。
this.getClass().getClass() ==> 代表了Class的Class定义,也就是类型是Class,内容也是Class自身的。

打个不恰当的比喻:
一个库房管理员,用记事本记录所有的存货;
那么如果存货是一批记事本呢,用什么来记录啊?当然还是记事本。。。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧