java反射机制提供什么功能
作者:归人云淡风轻
时间:2023-04-28
浏览:2
功能说明1、在运行判断任何对象所属的类。2、运行时构造任何类的对象。3、运行中判断任何类所具有的成员变量和方法。4、在运行过程中获通信息。运行时调用任何对象的成员变量和方法。运行时处理注释。生成动态代理。实例@Testpublicvoidtest1()throwsException{Classclazz=Person.class;//1.通过反射,创建Person类对象Constructorcons=clazz.getConstructor(String.class,int.class);Personpe
本文目录
功能说明
1、在运行判断任何对象所属的类。
2、运行时构造任何类的对象。
3、运行中判断任何类所具有的成员变量和方法。
4、在运行过程中获通信息。
运行时调用任何对象的成员变量和方法。
运行时处理注释。
生成动态代理。
实例
@Test
public void test1() throws Exception {
Class clazz = Person.class;
//1.通过反射,创建Person类对象
Constructor cons = clazz.getConstructor(String.class, int.class);
Person person = cons.newInstance("Tom", 12);
System.out.println(person);//Person{name='Tom', age=12}
//2.通过反射,调用对象指定的属性、方法
//调用属性
Field age = clazz.getDeclaredField("age");
age.setAccessible(true);
age.set(person, 10);
System.out.println(person.toString());//Person{name='Tom', age=10}
//调用方法
Method show = clazz.getDeclaredMethod("show");
show.invoke(person);//my name is Tom and age is 10
System.out.println("===================================");
//通过反射,可以调用Person类的私有结构的。比如:私有的构造器、方法、属性
//调用私有的构造器
Constructor cons1 = clazz.getDeclaredConstructor(String.class);
cons1.setAccessible(true);
Person p1 = cons1.newInstance("Bruce");
System.out.println(p1);//Person{name='Bruce', age=0}
//调用私有的属性
Field name = clazz.getDeclaredField("name");
name.setAccessible(true);
name.set(p1, "Jarry");
System.out.println(p1);
//调用私有的方法
Method nation = clazz.getDeclaredMethod("nation", String.class);
nation.setAccessible(true);
Object nation1 = (String) nation.invoke(p1, "China");//相当于String nation = p1.showNation("China")
System.out.println(nation1);//I come from China
}
作者最新文章
coreldraw快捷键怎么设置在哪里
2026-11-02 21:39
AO3最新可用链接及中文入口汇总
2026-10-29 13:32
coreldraw怎么插入图片 图片导入步骤
2026-10-27 15:37
coreldraw快捷键冲突 怎么改 自定义按键解决
2026-10-24 08:50
AO3中文界面设置指南与核心功能使用教程
2026-10-14 23:28
上一篇:
Java如何读取Web应用中的资源?
下一篇:
怎么用Java代码实现工厂方法模式
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多

































