`
763691
  • 浏览: 42514 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JAVA反射机制实例代码(转)

阅读更多
首先在工程中建立 一个Bean类
public class UserBean {
    private String userName ="admin";
    private String passWord = "888";
    public String getPassWord() {
        return passWord;
    }
    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public void setUserName(int i) {
        
    }
}

然后 新建一个类 main.java
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class Main {
    
    //根据字段调用所有的set方法,传入死值 love

    private void dox8() throws Exception {
        // TODO Auto-generated method stub

        
        Class cls = Class.forName("com.accp.UserBean");
        Object o = cls.newInstance();
        
        Field[] fields = cls.getDeclaredFields();
        
        for (Field field : fields) {
            String fieldName = field.getName();
            
            Method method = cls.getDeclaredMethod("set"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1),new Class[]{String.class});
            method.invoke(o, new Object[]{"love"});
        }
        
        UserBean bean = (UserBean)o;
        
        System.out.println(bean.getUserName()+" "+bean.getPassWord());
        
    }
    
    private void dox7() throws Exception
    {
        Class cls = Class.forName("com.accp.UserBean");
        Object o = cls.newInstance();
        
        Method m = cls.getDeclaredMethod("setUserName",new Class[]{String.class});
        
        m.invoke(o,new Object[]{"John.Lenoe"});
        
        
        UserBean bean = (UserBean)o;
        
        System.out.println(bean.getUserName());
        
    }
    
    //通过字段找方法

    private void dox6() throws Exception {
        // TODO Auto-generated method stub

        Class cls = Class.forName("com.accp.UserBean");
        Object o = cls.newInstance();
        
        Field field = cls.getDeclaredField("userName");
        
        String fieldName = field.getName();
        
        Method method = cls.getDeclaredMethod("get"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1));
        
    }
    
    //调用其中一个已知方法名的方法

    private void dox5() throws Exception {
        // TODO Auto-generated method stub

        Class cls = Class.forName("com.accp.UserBean");
        Object obj = cls.newInstance();
        
        Method method = cls.getDeclaredMethod("getUserName");
        Object o = method.invoke(obj);
        System.out.println(o);
    }
    
    //调用当前类的所有get方法

    private void dox4() throws Exception {
        // TODO Auto-generated method stub

        Class cls = Class.forName("com.accp.UserBean");
        Object obj = cls.newInstance();
        Method[] methods = cls.getDeclaredMethods();
        
        for (Method method : methods) {
            if(method.getName().startsWith("get"))
            {
                Object temp = method.invoke(obj);
                System.out.println(temp);
            }
        }
        
    }
    
    //取出当前类中所有的方法

    private void dox3() throws Exception {
        // TODO Auto-generated method stub

        Class cls = Class.forName("com.accp.UserBean");
        Method[] methods = cls.getDeclaredMethods();
        
        for (Method method : methods) {
            System.out.println(method.getName()+" "+method.getReturnType());
        }
    }
    
    
    //取出当前类中所有的字段

    private void dox2() throws ClassNotFoundException {
        // TODO Auto-generated method stub

        Class cls = Class.forName("com.accp.UserBean");
        
        Field[] fields = cls.getDeclaredFields();
        
        for (int i = 0; i < fields.length; i++) {
            Field field = fields[i];
            System.out.println(field.getName()+" "+field.getType());
        }
        
    }
    
    public static void main(String[] args) throws Exception {
        Main ma = new Main();
        ma.dox8();
    }
    
    //根据传入的类名,生成类结构和类实例

    private void dox() throws Exception {
        // TODO Auto-generated method stub

        Class cls = Class.forName("com.accp.UserBean");
        Object obj = cls.newInstance();
        UserBean bean = (UserBean)obj;
        
        bean.setUserName("admin");
        System.out.println(bean.getUserName());
    }
}


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/doc123/archive/2008/09/19/2950785.aspx
分享到:
评论

相关推荐

    Java 反射机制 代码的实例

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部结构。通过反射,开发者可以动态地获取类的信息并调用其方法,创建对象,访问私有成员,甚至改变类的行为。在深入...

    java反射实例代码

    在提供的"java反射实例代码"中,应该包含了如何使用上述方法的实际示例,这些示例有助于加深对Java反射机制的理解。通过阅读和运行这些代码,开发者可以更直观地学习如何在程序运行时动态地操作类、方法和字段,从而...

    java反射调用实例代码

    这个"java反射调用实例代码"应该包含了以上介绍的各种反射操作,可以帮助学习者深入理解Java反射机制,并在实际项目中灵活运用。通过研究和实践这些代码,你可以更好地掌握Java反射的精髓,提升你的编程技能。

    JAVA反射机制的入门代码

    总的来说,"JAVA反射机制的入门代码"是初学者理解Java反射机制的好教材,通过它,你可以学习如何动态地操作Java类,提高代码的灵活性,并掌握处理`properties`文件的基础方法。在深入学习和实践中,你将进一步理解...

    java反射实现javabean转json实例代码.docx

    ### Java反射机制实现JavaBean转JSON的详细解析 #### 一、引言 在现代软件开发过程中,数据格式转换是一项非常常见的任务。特别是在处理不同系统之间的数据交换时,JSON(JavaScript Object Notation)因其轻量级...

    反射实例-JAVA反射机制

    ### 反射实例—JAVA反射机制 #### 一、反射概念及原理 反射在计算机科学领域,特别是程序设计中,是指程序有能力访问、检测和修改其自身的结构和行为。这一概念最早由Smith于1982年提出,并迅速应用于各种编程语言...

    Java 反射机制实例详解

    Java 反射机制实例详解 Java 反射机制实例详解是一种动态语言机制,允许在程序运行时加载、探知和使用编译期间完全不知道的类、生成其对象实体,调用其方法或者对属性设值。下面是 Java 反射机制实例详解的知识点:...

    java反射经典实例

    通过上述实例,我们可以看到Java反射机制在许多实际场景中的应用,它扩展了Java代码的灵活性和可扩展性。然而,也应注意,过度使用反射可能会引入复杂性和潜在的安全风险,因此在设计和实现时需权衡利弊。在理解了...

    Java反射机制 Java反射机制

    Java反射机制的主要作用包括:获取类的所有属性和方法、构造动态实例、调用类的方法等。通过反射,程序可以动态地创建对象和调用其方法,从而实现更灵活的功能。 #### 二、Java反射机制的由来与发展 Java反射机制...

    java反射机制文档及代码

    在本资料"java反射机制文档及代码"中,详细介绍了Java反射的基础知识和常见应用。 首先,反射的核心类是`java.lang.Class`,它代表了运行时的类信息。通过Class对象,我们可以获取到类的名称、包名、属性、构造器、...

    Java反射经典实例

    Java反射机制允许我们动态地获取类的信息,并在运行时创建和调用对象的方法。这种能力使得Java具有高度的灵活性和动态性,特别是在处理跨版本兼容性、元数据操作以及插件系统等方面。 二、反射的基本使用 1. 获取...

    一个例子让你了解Java反射机制

    Java反射机制是Java编程语言中的一个重要特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类集中在java.lang.reflect包下,包括Class、Constructor、Method和...

    反射实例-JAVA反射机制.doc

    Java 反射机制详解 Java 反射机制是 Java 语言提供的一种强大的工具,它允许程序在运行时动态地获取类的信息(如类名、属性、方法等)并进行操作。这种能力使得 Java 应用程序更加灵活,能够在运行时发现和修改自身...

    java反射机制+代码示例

    Java反射机制是Java编程语言中...通过实际的代码示例,学习和理解Java反射机制将变得更加直观和深入。在实际开发中,反射常用于框架、插件系统、序列化/反序列化、测试等方面,但也需要谨慎使用,避免过度依赖和滥用。

    Java反射机制总结(实例分析)

    Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并进行操作。通过反射,开发者可以在程序执行时发现并访问类的字段(fields)、方法(methods)以及构造器(constructors),...

    Java反射机制的详细讲解及实例,有助于java深度开发

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、字段和方法等对象。这一机制对于理解和利用Java的动态性至关重要,尤其是在进行复杂系统设计、框架开发以及元数据驱动的应用中...

Global site tag (gtag.js) - Google Analytics