学习java代理类过程中,遇到并解决的一些问题(其实本篇与代理无关。。。。)

问题1.如何查看Java类库源代码

因为是新换的电脑,eclipse和JDK都重装了最新版本,在学习代理类时,想查看Proxy.newProxyInstance( ),结果显示


这应该是由于我并没有把rt.jar同JDK下的src.jar绑定起来导致的;

我的绑定办法,点击Change Attached Source...,然后在弹出来的对话框下,将JDK目录下的src.zip导入,问题解决。


问题2. .class与.getClass()的区别

.class与.getClass()都可以用来获取Class对象;

.class是通过 类名.class 来获取Class对象,编译的时候即获取;

.getClass()是通过 实例名.getClass() 来获取Class对象,运行的时候获取;(稍后补充代码说明)

问题3. System.out.println(对象)时,我知道会调用对象.toString()方法,但是为什么object.getClass()和object,同是对象,但打印结果为什么不同,分别是(传入的实参是Dog类的对象)

                class com.pa1.Dog

com.pa1.Dog@52e922

虽然后来解决了,原因还挺简单,但这中间也费了不少劲儿,都怪自己java知识太薄弱;

首先object.getClass()返回的是一个泛型Class<?>,与object数据类型不同,接着又查看了toString的代码实现,Object中toString()方法的实现是这样的:

getClass().getName() + "@" + Integer.toHexString(hashCode());

而泛型Class<?>重写了toString方法,是这样的:

(isInterface() ? "interface " : (isPrimitive() ? "" : "class "))           + getName();  

object.getClass().getName()方法,返回的即是 com.pa1.Dog,问题解决。





阅读更多
文章标签: java
想对作者说点什么? 我来说一句

ArcGIS_Desktop_9.3安装破解攻略.pdf

2010年10月11日 145KB 下载

没有更多推荐了,返回首页

不良信息举报

学习java代理类过程中,遇到并解决的一些问题(其实本篇与代理无关。。。。)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭