java反射笔记1

问题一
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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值