Java通过反射实现实例化
2024-10-08 12:28:22
public static void main(String[] args) throws Exception { User user= (User) test(User.class);
System.out.println(user.getMoney());
invokeTest(user,"getMoneyT");
} /**通过反射获取实例
* @param clazz类,如user.class
* @return 类实例
* @throws Exception
*/
static Object test(Class clazz) throws Exception{
//clazz.newInstance();//实例化一个类,前提是该类存在无参构造参数
Constructor constructor=clazz.getConstructor(String.class);//得到构造器,String.class是即将实例化类clazz的构造参数的类型
Object obj= constructor.newInstance("test");//传入一个参数进行实例化
return obj;
}
/**调用指定方法
* @param obj对象
* @param methodName要调用的方法名
* @throws Exception
*/
static void invokeTest(Object obj,String methodName) throws Exception{
Method[] ms= obj.getClass().getDeclaredMethods();//当前类的方法,包括私有
//ms=obj.getClass().getMethods();//子类 父类的所有公共方法
for(Method m:ms){
System.out.println(m.getName());
if (m.getName().equals(methodName)) {
m.invoke(obj, null);//调用无参方法
} }
Method methods=obj.getClass().getMethod(methodName, null);//根据方法名和参数直接调用方法,方法无参传null
methods.invoke(obj, null);
}
/**通过反射获取字段
* @param clazz
* @throws Exception
*/
static void filed(Class clazz) throws Exception{
Field[] fs=clazz.getDeclaredFields();//当前类的字段,包括私有
//fs=clazz.getFields();//所有公共字段
for (Field field : fs) {
System.out.println(field.getName());
}
}
最新文章
- 浅谈利用SQLite存储离散瓦片的思路和实现方法
- PMO到底什么样?(3)
- the way of reading English books
- ELK+redis集群搭建
- ligerui grid行编辑示例
- SQL SERVER 中identity用法
- 无法在Web服务器上启动调试,与Web服务器通信时出现身份验证错误
- js构造函数
- asp.net 发邮件
- linux服务器之LVS、Nginx和HAProxy负载均衡器对比总结
- java学习笔记 --- 异常
- 阿里云服务器(Windows)如何下载文件
- iOS10以下版本不支持swiper
- 转 在PowerDesigner的PDM图形窗口中显示数据列的中文注释
- RabbitMQ常见错误2
- linux内存不足,swap交换分区创建
- sql not in 优化问题
- Java提供了哪些IO方式?IO, BIO, NIO, AIO是什么?
- 3D屏保:N皇后
- 什么是HBASE(三) HBase的压缩和编码