Java记录 -85- Reflection API的使用示例进阶
来源:互联网 发布:邑通软件科技有限公司 编辑:程序博客网 时间:2024/06/07 02:22
要想使用反射,首先需要获得待处理类或对象所对应的Class对象。
获取某个类或某个对象所对应的Class对象的常用的3种方式:
1. 使用Class类的静态方法forName,Class.forName(“java.lang.String”);
2. 使用类的.class语法:String.class;
3. 使用对象的getClass()方法:String s = “aa”; Class<?> clazz = s.getClass();
若想通过类的不带参数的构造方法来生成对象,有两种方式:
1.先获得Class对象,然后通过Class对象的newInstance()方法直接生成即可;
2.先获得Class对象,然后通过该对象获得对应的Constructor对象,再通过该Constructor对象的newInstance()方法生成;
public class ReflectTester { //该方法实现对象的拷贝操作 public Object copy(Object object) throws Exception{ Class<?> classType = object.getClass(); //System.out.println(classType); //class my.reflect.Customer Object obj = classType.newInstance(); System.out.println(obj); //my.reflect.Customer@c17164 //以下两行代码等价于上面的classType.newInstance(); Constructor cons = classType.getConstructor(new Class[]{}); Object obj2 = cons.newInstance(new Object[]{}); System.out.println(obj2); //my.reflect.Customer@1fb8ee3 //通过带参数的构造方法生产对象 Constructor cons1 = classType.getConstructor(new Class[]{String.class, int.class}); Object obj3 = cons1.newInstance(new Object[]{"hello", 23}); System.out.println(obj3); //my.reflect.Customer@61de33 return null; } public static void main(String[] args) throws Exception{ ReflectTester test = new ReflectTester(); test.copy(new Customer()); }}class Customer{ private long id; private String name; private int age; public Customer(){} public Customer(String name, int age){ this.name = name; this.age = age; } public long getId() { return id; } public void setId(long id) { this.id = id; } 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; }}
阅读全文
0 0
- Java记录 -85- Reflection API的使用示例进阶
- Java记录 -86- Reflection API的使用示例进阶2
- Java记录 -84- Reflection API的使用示例
- Java reflection代码示例
- 使用反射(Reflection)API
- Java Reflection API学习
- Java Reflection API简介
- Java Reflection API Notes
- Java Reflection API简介
- Java Reflection 相关及示例
- BLToolkit : Reflection.Emit的使用场景、工具包及示例总结
- Java学习--Reflection的使用
- HBase Java API 使用示例
- HBase Java API 使用示例
- 进阶:Java Reflection (JAVA反射)详解
- 使用 Java Reflection
- 使用 Java Reflection
- java Reflection使用
- 部署与管理ZooKeeper
- ZooKeeper典型应用场景
- 利用jQuery无插件创建可扩展目录树
- Java记录 -83- Java语言的反射机制
- Java记录 -84- Reflection API的使用示例
- Java记录 -85- Reflection API的使用示例进阶
- PAT乙级 1007. 素数对猜想 (20)
- Java记录 -86- Reflection API的使用示例进阶2
- Java记录 -87- java.lang.reflect.Array
- Java记录 -88- 利用反射机制调用对象的私有方法和属性
- Java记录 -89- java.lang.Class
- Java记录 -90- 静态代理模式深度剖析
- Redis简单了解
- ASP.NET MVC 5 实现基于Quartz.net 的任务调度管理平台(二)