Java_reflect


JAVA_Reflect


1.Class类

(1)java中,静态成员和普通数据类型不是对象;

(2)类是java.lang.Class类的对象;

(3)表示方法

a.Class c1 = class_name.class;
b.Class c2 = object_name.getClass();
//某个类的class type
c.Class c3 = Class.forName("类路径");

(4)通过类的Class Type创建该类的对象

(Class_Name)c1.newInstance();
//该类需要有默认无参构造方法

2.动态加载类

(1)静态加载: new创建对象时,是静态加载,即编译时加载

(2)动态加载: 运行时加载 Class c = Class.forName(args[0])

(3)功能性类一般使用动态加载

3.获取方法信息

(1)关键字的类类型:

int.class;
String.class;
double.class;
...
void.class;

(2) 类类型的常用方法:

a.c1.getName();
b.c1.getMethods();//返回的是Method类型集合,所有public方法,包括继承的
c.c1.getDeclaredMethods()//获取该类自己声明的方法

(3)Method类型的方法:

a.m1.getReturnType();//得到的是类类型
b.m1.getName();
c.m1.getParameterType();

4.获取成员变量信息

(1)成员变量也是对象:

成员变量是java.lanng.reflect.Field类的对象
a.c1.getDeclaredFileds();
b.f.getType();
c.f.getName();

(2)构造方法也是对象:

构造方法是java.lang.Constructor类的对象
a.c1.getConstructors();
b.con1.getName();
c.con1.getParameterTypes();

5.方法的反射操作

Method m = c.getMethod(parma1,param2);
m.invoke(object, param1.param2,...);

6.泛型的本质

//反射的操作都是编译后的操作,是字节码, 运行时操作;

//编译之后,集合的泛型是去泛型化的;

//泛型是编译时防止误操作的,编译后就无效了

//可以通过反射操作绕过编译来使泛型无效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值