`

反射 Class Method Field 初步使用

 
阅读更多
代码小例子:
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;
	}

}
分享到:
评论

相关推荐

    Java反射之Constructor、Method、Field使用及说明

    附件是自己总结在编程过程中所遇到的关于反射的内容,主要是详细的描述了关于Constructor、Mehod、Field和Class类的内容

    Java 反射(Reflection) 经典实用例子

    Method method = ownerClass.getMethod(methodName, argsClass):通过Method名和参数的Class数组得到要执行的Method。 method.invoke(owner, args):执行该Method,invoke方法的参数是执行这个方法的对象,和参数...

    java反射机制知识点

    java反射机制基础学习。Class、Method、Field

    java 反射简单用例

    java反射的用例代码 // //获取类对象的属性 // Field field = clazz.getDeclaredField("name"); // System.out.println(field); // // Method method = clazz.getDeclaredMethod("getName", new Class[]{}); // ...

    JAVA反射机制动态调用 计算器对象的加法,减法函数;JAVA反射机制修改一个学生对象 的私有数据成员

    使用JAVA反射机制动态调用 计算器对象的加法,减法函数。 使用JAVA反射机制修改一个学生对象 的私有数据成员(不允许调用setters) 使用的类有Class, Method, Field

    Java反射总结:入门进阶到使用

    3.2 反射中类加载器、构造器、Method、Field的进阶操作 3.2.1 对类加载器的操作: 3.2.2 对构造器的操作: 3.2.3 对Method、Field的操作: 3.2.4 对Field的操作: 四 反射进阶之深入剖析 4.1 Java反射机制的起源

    《剑指offer》Java基础-反射篇.pdf

    反射的基本使用 获取类的 Class 对象 构造类的实例化对象 获取一个类的所有信息 获取类中的变量(Field) 获取类中的方法(Method) 获取类的构造器(Constructor) 获取注解 通过反射调用方法 反射的应用场景 ...

    day021-反射和注解笔记和代码.rar

    Method method = clazz.getDeclaredMethod(String methodName,Class... 参数字节码)根据方法名和参数类型获取指定的的方法 methodName:方法名 Class:形参类型。如果方法没有形参,则Class可变参数...

    Java基础 反射篇.md

    - 反射的基本使用 - 获取类的 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...

    12.尚硅谷_java基础_反射

    理解 Class 类 理解 Java 的类加载机制 学会使用 ClassLoader 进行类加载 理解反射的机制 掌握 Constructor、Method、Field 类的用法 理解并掌握动态代理

    java反射配置文件实现

    用反射原理 从配置文件中读取数据 public static void main(String[] args) throws Exception{ Properties pro=new Properties(); pro.load(new FileInputStream("fanshe.txt")); //Class c=null; String ...

    基础深化和提高-java反射技术

    主要的类和接口包括Class、Method、Field、Constructor等。 以下是Java反射技术的一些常见应用: 获取类的信息:通过反射可以获取类的名称、父类、接口、方法、字段等信息。 实例化对象:通过反射可以实例化一个...

    java框架知识点汇总(反射,XML,设计模式,Redis缓存数据库)

    Class 类与 java.lang.reflect 类库一起对反射的概念进行了支持,该类库包含了 Field,Method,Constructor 类 (每个类都实现了 Member 接口)。这些类型的对象时由 JVM 在运行时创建的,用以表示未知类里对应的成员。...

    java Reflection 反射机制 反编译

    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)。

    尚硅谷_佟刚_Java基础_反射.pdf

    理解Class 类 理解Java 的类加载机制 学会使用ClassLoader 进行类加载 理解反射的机制 掌握Constructor、Method、Field 类的用法 理解并掌握动态代理

    Java高级程序设计实战教程第三章-Java反射机制.pptx

    3.2.4 使用反射机制的步骤 导入Jjava.lang.relfect 包需 遵循以下3三个步骤: 第一步是获得你想操作的类的 java.lang.Class 对象; 第二步是调用诸如 getDeclaredMethods 的方法; 第三步使用 反射API 来...

    候捷谈Java反射机制

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它...本文将谈到java.lang.Class,以及java.lang.reflect中的Method、Field、Constructor等等classes。

Global site tag (gtag.js) - Google Analytics