代码小例子:
package com.test;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ReflectTest
{
// object's copy
public static Object copy(Object obj) throws Exception, Exception
{
Class<? extends Object> clazz = obj.getClass();
// Constructor con = clazz.getConstructor(new
// Class[]{int.class,String.class});
Constructor con = clazz.getConstructor();
// Object o = con.newInstance(new Object[]{1,"2"});
Object o = con.newInstance(new Object[] {});
Field[] field = clazz.getDeclaredFields();
for (Field field2 : field)
{
String name = field2.getName();
String firstLetter = name.substring(0, 1).toUpperCase();
String getMethodName = "get" + firstLetter + name.substring(1);
String setMethodName = "set" + firstLetter + name.substring(1);
Method getMethod = clazz.getMethod(getMethodName, new Class[] {});
Method setMethod = clazz.getMethod(setMethodName,
new Class[] { field2.getType() });
Object value = getMethod.invoke(obj, new Object[] {});
setMethod.invoke(o, new Object[] { value });
// System.out.println(field2);
System.out.println(getMethodName);
System.out.println(setMethodName);
}
// System.out.println(o);
return o;
}
public static void main(String[] args) throws Exception
{
People p = new People();
p.setAge(1);
p.setName("liu");
p.setHight("66kg");
People p2 = (People) ReflectTest.copy(p);
System.out.println(p2.getAge());
System.out.println(p2.getHight());
System.out.println(p2.getName());
}
}
class People
{
private int age;
private String name;
private String hight;
public People()
{
}
public People(int age, String name)
{
this.age = age;
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getHight()
{
return hight;
}
public void setHight(String hight)
{
this.hight = hight;
}
}
分享到:
相关推荐
附件是自己总结在编程过程中所遇到的关于反射的内容,主要是详细的描述了关于Constructor、Mehod、Field和Class类的内容
Method method = ownerClass.getMethod(methodName, argsClass):通过Method名和参数的Class数组得到要执行的Method。 method.invoke(owner, args):执行该Method,invoke方法的参数是执行这个方法的对象,和参数...
java反射机制基础学习。Class、Method、Field
java反射的用例代码 // //获取类对象的属性 // Field field = clazz.getDeclaredField("name"); // System.out.println(field); // // Method method = clazz.getDeclaredMethod("getName", new Class[]{}); // ...
使用JAVA反射机制动态调用 计算器对象的加法,减法函数。 使用JAVA反射机制修改一个学生对象 的私有数据成员(不允许调用setters) 使用的类有Class, Method, Field
3.2 反射中类加载器、构造器、Method、Field的进阶操作 3.2.1 对类加载器的操作: 3.2.2 对构造器的操作: 3.2.3 对Method、Field的操作: 3.2.4 对Field的操作: 四 反射进阶之深入剖析 4.1 Java反射机制的起源
反射的基本使用 获取类的 Class 对象 构造类的实例化对象 获取一个类的所有信息 获取类中的变量(Field) 获取类中的方法(Method) 获取类的构造器(Constructor) 获取注解 通过反射调用方法 反射的应用场景 ...
Method method = clazz.getDeclaredMethod(String methodName,Class... 参数字节码)根据方法名和参数类型获取指定的的方法 methodName:方法名 Class:形参类型。如果方法没有形参,则Class可变参数...
- 反射的基本使用 - 获取类的 Class 对象 - 构造类的实例化对象 - 获取一个类的所有信息 - 获取类中的变量(Field) - 获取类中的方法(Method) - 获取类的构造器(Constructor) - 获取注解 - 通过反射...
Method method1=c.getMethod("setPwd", new Class[]{String.class}); method1.invoke(obj, new Object[]{"222"}); Method method2=c.getMethod(method_name, new Class[0]); method2.invoke(obj, new Object...
理解 Class 类 理解 Java 的类加载机制 学会使用 ClassLoader 进行类加载 理解反射的机制 掌握 Constructor、Method、Field 类的用法 理解并掌握动态代理
用反射原理 从配置文件中读取数据 public static void main(String[] args) throws Exception{ Properties pro=new Properties(); pro.load(new FileInputStream("fanshe.txt")); //Class c=null; String ...
主要的类和接口包括Class、Method、Field、Constructor等。 以下是Java反射技术的一些常见应用: 获取类的信息:通过反射可以获取类的名称、父类、接口、方法、字段等信息。 实例化对象:通过反射可以实例化一个...
Class 类与 java.lang.reflect 类库一起对反射的概念进行了支持,该类库包含了 Field,Method,Constructor 类 (每个类都实现了 Member 接口)。这些类型的对象时由 JVM 在运行时创建的,用以表示未知类里对应的成员。...
import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; public class ReflectionTest { public static void main(String[] args) { Class c = null; try { ...
本段代码是在学习了反射相关知识后,结合实际开发经验,以一个简单demo讲述开发中是如何利用发射进行开发。 主要包含以下三个知识点:1.以tomcat为例,讲述其基于反射运行的原理。...获取class的方法(Method)。
理解Class 类 理解Java 的类加载机制 学会使用ClassLoader 进行类加载 理解反射的机制 掌握Constructor、Method、Field 类的用法 理解并掌握动态代理
3.2.4 使用反射机制的步骤 导入Jjava.lang.relfect 包需 遵循以下3三个步骤: 第一步是获得你想操作的类的 java.lang.Class 对象; 第二步是调用诸如 getDeclaredMethods 的方法; 第三步使用 反射API 来...
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它...本文将谈到java.lang.Class,以及java.lang.reflect中的Method、Field、Constructor等等classes。