`
wenhai_zhang
  • 浏览: 190956 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java 反射示例2--简要spring

    博客分类:
  • java
阅读更多

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_adv-java-examples_大项目

    《高级Java编程实例详解》是一份宝贵的资源,包含了大量的Java源代码示例,这些示例源自书籍中的教学内容,同时也代表了大型企业级项目的实践应用。这个压缩包"adv-java-examples.zip"提供了丰富的学习材料,无需...

    19套java面试题

    - Spring Boot和Spring Cloud的简要介绍。 12. **多线程编程** - 线程池的创建和使用,如Executors类。 - 死锁的概念,如何避免死锁。 13. **网络编程** - TCP和UDP的区别,各适合什么场景。 - Socket编程的...

    javaJDK数据库开发web开发

    本书将引导读者了解JDK的安装与配置,学习Java语法,包括基本数据类型、控制结构、类与对象、异常处理、多线程编程等内容,同时涵盖Java集合框架、I/O流、网络编程以及Java反射和注解等高级主题。 数据库系统开发...

    Java 最常见 200+ 面试题全解析:面试必备.pdf

    ### Java 最常见 200+ 面试题全解析:面试必备 #### 序言与背景 在当今快速发展的IT行业中,Java作为一门历史悠久且应用广泛的编程语言,始终占据着重要的地位。对于求职者而言,掌握扎实的Java基础知识不仅能够...

    core java 甲骨文ppt

    虽然标题主要关注Core Java,但PPT可能也会简要介绍Java企业版(Java EE),包括Servlet、JSP、EJB和Spring框架等,为开发者展示Java在服务器端开发的强大能力。 十、最佳实践 最后,PPT通常会包含一些编程最佳实践...

    Java基础教材

    描述中提到的Spring、Struts和Hibernate是Java企业级开发中的三个重要框架,属于J2EE(Java 2 Platform, Enterprise Edition)的一部分。让我们简要了解一下它们: 1. **Spring框架**:是一个全面的企业应用开发...

    java-pocs:Java简单Pocs

    3. **安全测试**:在网络安全领域,Java POC常用于创建漏洞验证代码,例如利用反射、序列化等机制测试系统是否存在安全漏洞,如CVE-2015-4852(Apache Commons Collections反序列化漏洞)。 4. **系统集成**:在多...

    java代码-第一个java

    随着对Java的深入学习,开发者会接触到更高级的主题,如反射、泛型、Lambda表达式、模块化系统(Java 9及以上版本)、JavaFX图形用户界面编程,以及Spring框架等用于构建大型企业级应用的技术。 总之,“第一个Java...

    java_example

    在"java_example"中,自述文件可能是对Java编程示例的简要说明,指导用户如何理解和运行这些例子。 【Java核心概念】 1. 类与对象:Java是面向对象的语言,所有程序都是通过类和对象来组织的。类是对象的模板,...

    JavaCourse:Java课程的一些演示

    课程可能还会涉及Java的高级特性,如反射、多线程、并发编程、模块化系统(Jigsaw Project)以及Java 8及更高版本引入的Lambda表达式和Stream API。此外,可能会探讨如何使用Java标准库以及流行的开源库,如Spring...

Global site tag (gtag.js) - Google Analytics