1023

ava 1.2 
反射的基石--> Class类
Java类用于描述一类事物的共性,该类事物该有什么属性,没有什么属性,至于这种属性是什么,则是由这个类的实例对象来确定,不同的实例对象有不同的属性值
Class--java程序中的各个java类属于同一类食物,描述这类事物的java类名就是Class
class.forName的作用
返回刚才加载进来的字节码,1,字节码已经存在过,直接返回,jvm还没有这份字节码,则由类加载器加载,把加载进来的字节码缓存在jvm中
.class,.getClass(),*Class.forName ..Class.forName("java.util.Date")


9个预定义Class实例对象,8个基本类型和void
int.class == Integer.TYPE
数组类型的Class实例对象
Class.isArray()
只要是在源程序中出现的类型,都有各自的Class实例对象


反射-->把Java类中的各种成分映射成相应的java类。
例如一个Java类中用一个Class类的对象来表示,一个类中的组成部分:成员变量Field,方法Method,构造方法Constructor,包Package


Constructor类
代表某一个类中的一个构造方法
Constructor[] constructor = Class.foName("java.lang.String").getConstructors()


class ->constructor-->new Object
==>         (缓存)
反射会导致程序性能严重下降


用反射调用某个类的main方法
数组的反射
具有相同维数和元素类型的数组属于同一个类型,得到的字节码是同一份,即具有相同的Class实例对象,代表数组的Class实例对象的getSuperClass()方法返回的父类Object类对应的Class
基本类型的一维数组可以被当做Object类型使用,不能当做Object[]类型使用
非基本类型的一维数组,既可以当做Object类型使用,又可以当做Object[]类型使用


没有办法得到数组中元素的类型
int[] a = new int[3]
Object[] a = new Object[]{"a",1}
a[0].getClass().getName(),可以得到某个元素的类型


Class cls = Date.class//字节码1


**对象要得到字节码用方法


20
编译时,运行时
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值