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

JAVA反射机制实例代码

    博客分类:
  • 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());
    }
}





这就是基本上总结的反射应用
分享到:
评论

相关推荐

    Java反射机制实例代码分享

    主要介绍了Java反射机制实例代码分享,具有一定参考价值,需要的朋友可以了解下。

    Java 反射机制 代码的实例

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

    Java 反射机制实例详解

    主要介绍了Java 反射机制实例详解的相关资料,这里对java中反射机制进行了详细的分析,需要的朋友可以参考下

    JAVA反射机制的入门代码

    代码为JAVA反射的一个DEMO,适合初学者临摹学习,还附有properties的创建方法,比较基础。

    JAVA反射机制原理及代码

    java反射原理,反射机制原理,以及java反射机制实现实例!希望能给大家一点帮助!

    java反射机制应用

    java反射机制应用,文档中列举了使用java反射机制的各个应用场景,加以代码实例,使用学习非常方便。

    反射实例-JAVA反射机制

    Java中,反射是一种强大的工具。它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件 之间进行源代表链接。反射允许我们在编写与执行时,使我们的程序代码能够接入装载到JVM中的类的内 部信息,而不是...

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

    常见的应用如下 逆向代码 ,例如反编译 与注解相结合的框架 例如Retrofit 单纯的反射机制应用框架 例如EventBus 2.x 动态生成类框架 例如Gson Java高级程序设计实战教程第三章-Java反射机制全文共15页,当前为第8页...

    java 反射机制详解及实例代码

    主要介绍了java 反射机制详解及实例代码的相关资料,需要的朋友可以参考下

    Java反射机制_源代码

    内涵对于java类的反射机制,对于构造,普通方法,属性,以及实例化的操作

    Java 反射机制详解及实例

    主要介绍了Java 反射机制详解及实例的相关资料,需要的朋友可以参考下

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

    JAVA中的反射机制(内含大量实例)Java中,反射是一种强大的工具。它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代表链接。反射允许我们在编写与执行时,使我们的程序代码能够接入装载到...

    java反射机制与动态代理

    java中反射机制的分析,动态代理的分析与实现。有详细的代码实例,适合学习。

    Java 反射机制详解及实例代码

    本文主要介绍Java 反射机制的知识,这里提供示例代码帮助大家学习理解此部分知识,有需要的小伙伴可以参考下

    Java中类的反射机制

    详细介绍Java中类的反射机制,并附带实例程序供参考使用。

    java反射与代理实现AOP

    利用java中的反射机制以及代理机制,实现了AOP。有详细的代码和实例

    java反射机制原理详解.docx

    java.lang.Class:是反射的源头 我们创建一个类,通过编译,生成对应的.calss文件,之后使用java.exe加载(jvm的类加载器)此.class文件,此.class文件加载到内存以后,就是一个运行时类,存在缓存区,那么这个运行时类...

    java 类加载机制和反射详解及实例代码

    主要介绍了java 类加载机制和反射详解及实例代码的相关资料,需要的朋友可以参考下

    精通Java:JDK、数据库系统开发Web开发(实例代码)

    第8章 Java反射机制 第9章 数据结构与集合类 第3篇 图形用户界面 第10章 Java Swing(上) 第11章 Java Swing(下) 第12章 Applet网页小程序 第13章 图形编程 第14章 多媒体编程 第4篇 Java高级技术 第15章 字符串...

    JAVA中的反射机制

    Java中,反射是一种强大的工具。它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代表链接。反射允许我们在编写与执行时,使我们的程序代码能够接入装载到JVM中的类的内部信息,而不是源...

Global site tag (gtag.js) - Google Analytics