java 反射示例,以备后用
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反射机制的简要介绍及示例应用,希望对初学者有所帮助。反射虽然功能强大,但在实际使用时也需要注意其性能开销和安全性问题。
### 候捷谈Java反射机制 #### Java反射机制概览 Java反射机制是一种强大的运行时功能,使得Java能够在程序执行过程中动态地获取类的信息并操纵类的对象。这一特性极大地扩展了Java语言的能力,使其更加灵活多变。...
《高级Java编程实例详解》是一份宝贵的资源,包含了大量的Java源代码示例,这些示例源自书籍中的教学内容,同时也代表了大型企业级项目的实践应用。这个压缩包"adv-java-examples.zip"提供了丰富的学习材料,无需...
- Spring Boot和Spring Cloud的简要介绍。 12. **多线程编程** - 线程池的创建和使用,如Executors类。 - 死锁的概念,如何避免死锁。 13. **网络编程** - TCP和UDP的区别,各适合什么场景。 - Socket编程的...
本书将引导读者了解JDK的安装与配置,学习Java语法,包括基本数据类型、控制结构、类与对象、异常处理、多线程编程等内容,同时涵盖Java集合框架、I/O流、网络编程以及Java反射和注解等高级主题。 数据库系统开发...
### Java 最常见 200+ 面试题全解析:面试必备 #### 序言与背景 在当今快速发展的IT行业中,Java作为一门历史悠久且应用广泛的编程语言,始终占据着重要的地位。对于求职者而言,掌握扎实的Java基础知识不仅能够...
虽然标题主要关注Core Java,但PPT可能也会简要介绍Java企业版(Java EE),包括Servlet、JSP、EJB和Spring框架等,为开发者展示Java在服务器端开发的强大能力。 十、最佳实践 最后,PPT通常会包含一些编程最佳实践...
描述中提到的Spring、Struts和Hibernate是Java企业级开发中的三个重要框架,属于J2EE(Java 2 Platform, Enterprise Edition)的一部分。让我们简要了解一下它们: 1. **Spring框架**:是一个全面的企业应用开发...
3. **安全测试**:在网络安全领域,Java POC常用于创建漏洞验证代码,例如利用反射、序列化等机制测试系统是否存在安全漏洞,如CVE-2015-4852(Apache Commons Collections反序列化漏洞)。 4. **系统集成**:在多...
随着对Java的深入学习,开发者会接触到更高级的主题,如反射、泛型、Lambda表达式、模块化系统(Java 9及以上版本)、JavaFX图形用户界面编程,以及Spring框架等用于构建大型企业级应用的技术。 总之,“第一个Java...
在"java_example"中,自述文件可能是对Java编程示例的简要说明,指导用户如何理解和运行这些例子。 【Java核心概念】 1. 类与对象:Java是面向对象的语言,所有程序都是通过类和对象来组织的。类是对象的模板,...
课程可能还会涉及Java的高级特性,如反射、多线程、并发编程、模块化系统(Jigsaw Project)以及Java 8及更高版本引入的Lambda表达式和Stream API。此外,可能会探讨如何使用Java标准库以及流行的开源库,如Spring...