美文网首页
java——反射

java——反射

作者: 打死你的小乌龟 | 来源:发表于2018-08-30 00:00 被阅读0次

    /*
     * 获取字节码对象的方式:
     * 1,Object类中的getClass()方法的。
     * 想要用这种方式,必须要明确具体的类,并创建对象。
     * 麻烦 .
     * 
     */

        Person p = new Person();
        Class clazz = p.getClass();
        
        Person p1 = new Person();
        Class clazz1 = p1.getClass();
        
        System.out.println(clazz==clazz1);

    /*
     * 方式二:
     * 2,任何数据类型都具备一个静态的属性.class来获取其对应的Class对象。
     * 相对简单,但是还是要明确用到类中的静态成员。
     * 还是不够扩展。 
     * 
     */

        Class clazz = Person.class;
        Class clazz1 = Person.class;
        System.out.println(clazz==clazz1);
    }
    
    /*
     * 方式三:
     * 只要通过给定的类的 字符串名称就可以获取该类,更为扩展。
     * 可是用Class类中的方法完成。
     * 该方法就是forName.
     * 这种方式只要有名称即可,更为方便,扩展性更强。 
     */
    

        String className = "cn.itcast.bean.Person";
        
        Class clazz = Class.forName(className);
        
        System.out.println(clazz);
    
            String name = "dd.Person";
    
            Class clazz = Class.forName(name);
            
            Person p = (Person) clazz.newInstance();
            p.setAge(20);
            p.setName("花花");
            
            Constructor constructor = clazz.getConstructor(int.class,String.class);
        
            Object obj = constructor.newInstance(20,"花花");
            
    
            
            
            /*
             * 获取字节码文件中的字段。
             */
    public static void getFieldDemo() throws Exception {
                
                Class clazz = Class.forName("cn.itcast.bean.Person");
                
                Field field = null;//clazz.getField("age");//只能获取公有的,
                
                field = clazz.getDeclaredField("age");//只获取本类,但包含私有。 
                
                //对私有字段的访问取消权限检查。
                field.setAccessible(true);
                
                Object obj = clazz.newInstance();
                
                field.set(obj, 89);
                
                
                Object o = field.get(obj);
                
                System.out.println(o);

    public static void getMethod() throws Exception {
                    
                    Class clazz = Class.forName("cn.itcast.bean.Person");
                    
                    Method[] methods  = clazz.getMethods();//获取的都是公有的方法。 
                    methods = clazz.getDeclaredMethods();//只获取本类中所有方法,包含私有。 
                    for(Method method : methods){
                        System.out.println(method);

    public static void getMetho2() throws Exception {

        Class clazz = Class.forName("cn.itcast.bean.Person");

        Method method = clazz.getMethod("paramMethod", String.class, int.class);

        Object obj = clazz.newInstance();

        method.invoke(obj, "小强", 89);

    }

    public static void getMethod1() throws Exception {

        Class clazz = Class.forName("cn.itcast.bean.Person");

        Method method = clazz.getMethod("show", null);// 获取空参数一般方法。

        // Object obj = clazz.newInstance();
        Constructor constructor = clazz.getConstructor(String.class, int.class);
        Object obj = constructor.newInstance("小明", 37);

        method.invoke(obj, null);

相关文章

  • 博客地址

    java注解-01、java注解-02、Git面试资源java反射-01、java反射-02、java反射-03为...

  • Java反射机制入门

    Java反射机制入门 一、什么是反射 JAVA反射机制(The JAVA reflection mechanism...

  • Java基础之反射

    Java基础之—反射(非常重要)Java中反射机制详解Java进阶之reflection(反射机制)——反射概念与...

  • 反射之一

    总结内容源自一下文章粗浅看java反射机制反射机制应用实践谈谈java反射机制Java Reflection(反射...

  • 反射之二

    总结内容源自一下文章粗浅看java反射机制反射机制应用实践谈谈java反射机制Java Reflection(反射...

  • Java基础之反射

    Java基础之反射 反射基本介绍 反射的使用通过反射调用属性和方法通过反射获取配置文件 反射基本介绍 Java反射...

  • Java 反射机制

    Java 反射机制 什么是反射 Java 反射是Java语言的一个很重要的特征,它使得Java具体了“动态性”。 ...

  • 一探究竟:Java反射效率低的原因到底在哪?

    预备知识 了解 Java 反射基本用法 看完本文可以达到什么程度 了解 Java 反射原理及 Java 反射效率低...

  • 面试官说:大家都说 Java 反射效率低,你知道原因在哪里么

    预备知识 了解 Java 反射基本用法 看完本文可以达到什么程度 了解 Java 反射原理及 Java 反射效率低...

  • Java面试题之JavaSE高级

    一、Java中的反射 1.说说你对Java中反射的理解 java中的反射首先是能够获取到Java...

网友评论

      本文标题:java——反射

      本文链接:https://www.haomeiwen.com/subject/vcwqwftx.html