java中的反射,知道类名创建类,还可以设置私有属性的值
2024-10-12 01:15:44
刚刚学到了反射,感觉反射的功能好强大,所以想写篇博客记录下自己的学习成果。
利用反射来创建对象。
Class c1=Class.forName("test.Person");//通过类名来创建类,这里test.person只是一个类名,。这个person类代码在//本文最下方 /**
*情况1:调用无参的构造方法来创建对象
*/
Person p=c1.newInstance();//这样就创建好了 /**
*情况2:调用有参构造方法
*/
Constructor cs=c1.getConstructor(String.class,int.class);//括号里面写的是构造方法的参数类型的类化,也就是后面加.class就好了
Person p=(Person) cs.newInstance("张三",22);//调用构造方法生成对象
利用反射来设置私有属性
try {
Class clazz=Class.forName("testPerson");
Person p=(Person) clazz.newInstance();
Field f1=clazz.getDeclaredField("name");
f1.setAccessible(true);//设置是否可以操作私有属性
f1.set(p, "wfadf");
System.out.println(f1.get(p));
} catch (Exception e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}
Person类代码
package test; public class Person {
private String name;
private int age; public Person() { } public Person(String name, int age) { this.name = name;
this.age = age;
} public String getName() {
return name;
}
/*
public void setName(String name) {
this.name = name;
}*/ public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} }
最新文章
- Ext.Net 学习随笔 003 超链接按钮
- Atitit prj 项目管理与行政管理(1)------项目环境的概览与建立
- AFNetworking request failed unacceptable content type text/html
- Js中的window.parent ,window.top,window.self 详解
- 快速求n的质因子(数论)
- 360随身wifi怎样购买?360随身wifi怎样预约?
- ArcScene三维制作
- 【关于php】Appserv中关于DW配置站点问题
- C#Socket编程socket.Connect权限出错问题及解决
- S - stl 的mapⅠ
- LeetCode OJ 108. Convert Sorted Array to Binary Search Tree
- Swagger 路径过滤 -PreSerializeFilters
- CF 427D Match &;amp; Catch 求最短唯一连续LCS
- Selenium常用操作汇总二——如何操作cookies(转)
- android 常用adb 及linux 命令
- [RHEL7.1]关闭防火墙及SElinux
- CRM 业务
- pthread中读写锁
- 关于MBR、GPT以及BIOS引导模式区分
- 7.0 启动app权限弹窗问题