java反射三种_Java反射
1、反射获取Class对象的三种⽅式
反编译
不是⾃⼰写的类,也不知道类⾥⾯有哪些⽅法 变量,让你能够使⽤程序上线了,修改程序但不终⽌程序的运⾏—-反射(1)Object类 getClass ⽅法
getClass 返回此Object的运⾏时类
getName() 返回由 类对象表⽰的实体(类,接⼝,数组类,原始类型或空⽩)的名称,作为 String
(2)通过Class属性获得
都有⼀个静态的class属性
(3)通过 forName
static 类> forName(String className) 返回与给定字符串名称的类或接⼝相关联的 类对象
2、反射获得构造⽅法
(1)获得构造⽅法
洞箫独奏Constructor getDeclaredConstructor(类>... parameterTypes)
返回⼀个 Constructor对象,该对象反映 Constructor对象表⽰的类或接⼝的指定 类函数
Constructor>[] getDeclaredConstructors()
返回⼀个反映 Constructor对象表⽰的类声明的所有 Constructor对象的数组 类
Constructor getConstructor(类>... parameterTypes)
返回⼀个 Constructor对象,该对象反映 Constructor对象表⽰的类的指定的公共类函数
Constructor>[] getConstructors()
返回包含⼀个数组 Constructor对象反射由此表⽰的类的所有公共构造 类对象
(2)使⽤构造⽅法
宏基电脑怎么样public T newInstance() throws InstantiationException, IllegalAccessException
访问私有的构造⽅法。必须通过Accessible设置为true。强⾏访问
public void tAccessible(boolean flag) throws SecurityException将此对象的accessible标志设置为指⽰的布尔值true的值表⽰反射对象应该在使⽤时抑制Java语⾔访问检查。 fal的值表⽰反映的对象应该强制执⾏Java语⾔访问检查3、反射获得成员变量
(1)获得字段
Field[] getDeclaredFields()
返回的数组 Field对象反映此表⽰的类或接⼝声明的所有字段 类对象
getField(String name)
返回⼀个 Field对象,它反映此表⽰的类或接⼝的指定公共成员字段 类对象
强壮英文
Field[] getFields()
返回包含⼀个数组 Field对象反射由此表⽰的类或接⼝的所有可访问的公共字段 类对象
4、反射获得成员⽅法
Declared–所有的
Methods–公共的
使⽤成员⽅法
Object invoke(Object obj, Object… args)
在具有指定参数的 ⽅法对象上调⽤此 ⽅法对象表⽰的底层⽅法
5、泛型
安全检测机制
例如:
ArrayList arrylist=new ArrayList();
存在类型错误 类型⽆法转换成功
6、泛型⽅法
喀山大教堂
如何写⼀个⽅法 实现对 整数 浮点数 字符的输出。–泛型
基本原则:
a、所有泛型⽅法的声明都有⼀个类型参数声明的部分()--表⽰所有的类型参数
b、泛型⽅法只能是引⽤数据类型,(int double)
例如:
public static void show(){
}
7、泛型类
倡议书500字泛型类 增加了类型参数声明部分
例如:
五言古诗大全
class Test
责任制>形容口才好的词语{
private T t;
Test(T t){
this.t=t;
}
}
8、泛型擦除
Java本⾝不存在泛型。增加了泛型机制。—Java虚拟机中都是确定的类型 泛型擦除9、类型通配符
>–代替具体的类型参数
例如:
public void print(List> data){
<(0);
}
--指所有的数据类型
10、反射与泛型
泛型:允许程序员在编译时检测到⾮法的数据类型,运⾏期间Object,泛型擦除通过反射可以添加不同的数据类型