java反射笔记1

来源:互联网 发布:浏览器打开淘宝很卡 编辑:程序博客网 时间:2024/05/29 14:31

问题一
1、对象有编译类型和运行类型
Object object= new Date()
编译类型:Object
运行类型:Date
根据对象object调用Date类中的toLocalString, 如何来做?

obj.toLocalString()代码在编译阶段去编译类型 Object中检查是否有该方法,若没有编译失败。
解决方案1:强制转换object为Date类型,前提:必须知道对像的真实类型是什么?
Date d = (Date)object;
d.toLocalString();//YES
如果不知道object的真实类型,如何调用toLocalString?
元数据: metadata描述数据的描述数据
反射:得到元数据的行为
Class是对一切类共同功能和状态的抽象,Class应该有的成员:
getPackage()
getSuperClass()
getMethod()
getField()
通过反射就可以得到一个类中的包,类,字段,方法,构造器等。
Class类用于描述一切Java类和接口,他的各个实例对象是Java虚拟的字节码。
为了明确区分Class实例表示的是谁的字节码。class类提供了泛型
Class cl = Date.clas;//cl表示Date的字节码
如何得到Class类的实例?
1类名.class
2Class.forName(String className)根据一个类的全限定名来构建Class对象
3 每一个对象都有getClass()方法,返回对象的真实类型
一个类在Java虚拟机中有且只有一份字节码

0 0
原创粉丝点击