`

反射 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使用及说明

    在深入探讨Java反射机制中`Constructor`、`Method`、`Field`以及`Class`类的使用之前,我们需要先了解反射的基本概念及其重要性。反射是Java的一项强大功能,它允许程序在运行时检查类和对象的结构,甚至可以创建和...

    JavaSE062Class类、Method类及Field类的使用方式深度探析.doc

    JavaSE062Class类、Method类及Field类的使用方式深度探析 JavaSE062Class类、Method类及Field类是Java中三个非常重要的类,它们都是Java反射机制的核心组件。在Java中,反射机制是指可以在运行时检查和修改类、方法...

    java反射机制及Method.invoke解释

    在 Java 反射机制中,我们可以通过 Class 对象来获取类的信息,通过 Field 对象来获取类的成员变量,通过 Method 对象来获取类的方法。 例如,要获取某个对象的属性,我们可以使用以下代码: ```java public ...

    java反射机制,适合初步接触反射机制的人

    但是,需要注意的是,过度使用反射可能会导致性能下降和安全性问题,因此在使用反射时需要谨慎考虑。 总之,理解Java反射机制对于开发复杂的应用程序至关重要,尤其是在需要处理动态类型或元数据的情况下。

    java反射 反编译:.class--&gt;.java

    例如,`java.lang.Class`类提供了获取类信息的方法,`java.lang.reflect.Field`用于访问字段,`java.lang.reflect.Method`用于调用方法,而`java.lang.reflect.Constructor`则用于操作构造器。 获取类的三种方式:...

    java反射机制详解及Method.invoke解释.pdf

    通过使用 Class、Method、Field 等类,可以实现许多复杂的功能。 在实际开发中,Java 反射机制广泛应用于框架、库、工具等领域。例如,Spring 框架使用 Java 反射机制来实现依赖注入、AOP 等功能。 Hibernate 框架...

    java 反射的使用

    在Java中,反射机制的核心类是`java.lang.Class`,它代表了类的信息。通过反射,我们可以动态地创建对象、调用方法、访问字段,甚至在运行时发现和修改类的行为。以下是对Java反射使用及相关知识点的详细阐述: 1. ...

    JAVA反射机制应用

    在JAVA反射机制中,Class类和Field类、Method类、Constructor类是最重要的三个类,它们提供了访问类、字段、方法和构造函数的能力。 在获取某个对象的属性时,我们可以使用getField方法,例如: ```java public ...

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

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

    java反射(reflect)

    3. 谨慎使用反射,避免过度使用导致代码难以理解和维护。 总结,Java反射是Java语言中的强大工具,虽然带来了一些便利和灵活性,但也需要注意其潜在的风险和性能影响。在实际开发中,应根据具体需求权衡是否使用...

    java反射机制知识点

    这一机制的核心在于Java.lang.reflect包中的三个关键类:Class、Method和Field,它们分别代表类的信息、方法和字段。 1. Class类:在Java中,每一个类都有一个对应的Class对象,它包含了该类的所有信息,如类名、包...

    java反射 java反射 java反射java反射

    - `Method getDeclaredMethod(String name, Class&lt;?&gt;... parameterTypes)`: 获取具有指定名称和参数类型的方法,包括私有。 5. 动态调用对象的方法: - `Method method = obj.getClass().getMethod("methodName",...

    在Java中使用反射API的一个实例

    首先,要使用反射API,我们需要导入`java.lang.reflect`包中的几个关键类:`Class`、`Constructor`、`Method`和`Field`。这些类分别代表类对象、构造器对象、方法对象和字段对象。 1. **获取类对象**: 要使用反射...

    解析Java中的Field类和Method类

    Java中的Field类和Method类是Java反射机制的重要组成部分,它们提供了对类的字段(属性)和方法的动态访问和操作能力。在Java编程中,反射允许我们在运行时检查类的信息,包括类的结构、方法、字段,甚至可以修改类...

    javaf反射的一些方法介绍,使用和讲解

    例如,使用`Class.forName("类全名")`可以获取到对应的`Class`对象。 接下来是`Method`类,它代表类的方法。`Method`对象包含了方法的名称、返回类型、参数类型等信息。我们可以调用`Method`对象的`invoke()`方法来...

    反射机制.txt

    与上一段代码类似,这里使用`Class.forName`直接获取类,然后通过`getField`方法获取静态字段,并最终调用`field.get(ownerClass)`获取静态字段的值。 ##### 3. 调用对象的方法 ```java public Object ...

    反射的使用

    在Java中,反射机制主要通过java.lang.Class类、java.lang.reflect包中的类(如Constructor、Method、Field)来实现。本文将深入探讨Java反射的基本概念、用途、优缺点以及如何使用。 一、什么是Java反射 Java反射...

    java 反射简单用例

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

    反射+Class+获取和操作+入门

    本资源将引导初学者了解如何使用反射和Class类进行类的获取和操作。 首先,让我们了解如何获取Class对象。在Java中,有三种主要方式来获取Class对象: 1. 使用`Class.forName(String className)`方法,传入完全限定...

    java反射获取所有属性,获取所有get方法,包括子类父类

    - 使用反射操作时,要注意安全性和性能问题,因为反射会降低程序的运行效率,并可能破坏封装性,导致安全风险。 - 对于非公有的属性和方法,需调用`setAccessible(true)`来允许访问。 - 反射操作可能会抛出异常,...

Global site tag (gtag.js) - Google Analytics