`
xumingrencai
  • 浏览: 1183198 次
文章分类
社区版块
存档分类
最新评论

JAVA 反射机制实现 reflect

 
阅读更多

出自:http://blog.sina.com.cn/s/blog_5dbd1dda0100bkm1.html

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class ReflectTester
{
public Object copy(Object object) throws Exception
{
// 获得对象的类型
Class<?> classType = object.getClass();
System.out.println("Class:" + classType.getName());

// 通过默认构造方法创建一个新的对象
Object objectCopy = classType.getConstructor(new Class[] {}).newInstance(new Object[] {});

// 获得对象的所有属性
Field fields[] = classType.getDeclaredFields();

for (int i = 0; i < fields.length; i++)
{
Field field = fields[i];

String fieldName = field.getName();
String firstLetter = fieldName.substring(0, 1).toUpperCase();
// 获得和属性对应的getXXX()方法的名字
String getMethodName = "get" + firstLetter + fieldName.substring(1);
// 获得和属性对应的setXXX()方法的名字
String setMethodName = "set" + firstLetter + fieldName.substring(1);

// 获得和属性对应的getXXX()方法
Method getMethod = classType.getMethod(getMethodName, new Class[] {});
// 获得和属性对应的setXXX()方法
Method setMethod = classType.getMethod(setMethodName, new Class[] { field.getType() });

// 调用原对象的getXXX()方法
Object value = getMethod.invoke(object, new Object[] {});
System.out.println(fieldName + ":" + value);
// 调用拷贝对象的setXXX()方法
setMethod.invoke(objectCopy, new Object[] { value });
}
return objectCopy;
}

public static void main(String[] args) throws Exception
{
Customer customer = new Customer("Tom", 21);
customer.setId(new Long(1));

Customer customerCopy = (Customer) new ReflectTester().copy(customer);
System.out.println("Copy information:" + customerCopy.getId() + " " + customerCopy.getName() + " "
+ customerCopy.getAge());
}
}

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;
}
}

<!-- -->
分享到:
评论

相关推荐

    Java 反射机制 代码的实例

    Java 反射机制 代码的实例 请认真阅读 运行此代码 只要读懂了 反射机制也就明白了

    Java反射机制.txt

    ava反射机制 概述:通俗地讲Java反射就是通过类名获得类的实例的方法。java.lang.reflect提供了实现Java反射的API。

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

    3.2.3 Java反射机制的相关API java.lang.reflect包提供了用于获取类和对象的反射信息的类和接口。反射API允许对程序访问有关加载类的字段,方法和构造函数的信息进行编程访问。它允许在安全限制内使用反射的字段,...

    java反射机制核心代码

    java反射机制核心代码,小弟一直弄不明白,怎么通过反射来调用私有成员方法,看了这个后,你可以随心调用private方法,和属性,记得添加setAccessable(true),哦,要不还是不行,如:method.setAccessable(true);

    什么是java中的反射机制(reflect).docx

    什么是java中的反射机制(reflect).docx

    Java reflect 机制详解

    免费共享,很详细的介绍了反射机制的原理,适合追根究底的java学习者

    Java中的反射机制Reflect

    NULL 博文链接:https://vvsongsunny.iteye.com/blog/2038054

    候捷谈Java反射机制

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。...

    android系统java反射机制详解

    详细解析java的反射机制

    java反射机制的原理及在Android下的简单应用

    java反射机制的原理及在Android下的简单应用

    java反射机制详解

    java中的反射机制,pdf文档,常用的反射用法都有详细的说明。

    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 { ...

    java中的反射机制(内含大量实例)

    java 高级必学资料 java中的反射机制(内含大量实例)

    Reflect:学习java反射机制

    Reflect学习java反射机制

    java反射机制

    反射机制package com.langsin.reflection; import java.lang.reflect.Method; public class DumpMethods { public static void main(String args[]) throws Exception { // 加载并初始化命令行参数指定的类 ...

    java 反射对XML的解析

    java中的reflect机制解析XML

    Java反射及动态代理

    详细讲解java的reflect包的,阐述反射机制及动态代理的细节问题。其中动态代理部分内容参考网上资料。读完此文,相信会对javaf反射机制有一个完整清楚的了解。尤其应该看看其他中代码举例部分。

    Java学习之反射机制

    java反射机制的作用有  1、在运行时判断任意一个类所具有的成员变量和方法  2、在运行时构造任意一个类的对象  3、在运行时判断任意一个对象所属的类  4、在运行时调用任意一个对象的方法  在java的jdk中...

    手写IOC项目,学习理解Spring IOC原理

    我们都知道,Spring框架的IOC是基于Java的反射机制实现,实现IOC,必须掌握反射的实践方法。Java反射机制是在运行状态中,对于...资源内容包括Java反射机制的实践,使用反射机制实现IOC(包括依赖注入和对象创建)。

    Reflect:java反射机制的测试和ppt

    Reflectjava反射机制的测试和ppt

Global site tag (gtag.js) - Google Analytics