您的位置:首页 > 编程语言 > Java开发

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

2018-04-15 08:21 435 查看

问题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,问题解决。





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐