美文网首页
java反射机制

java反射机制

作者: 关玮琳linSir | 来源:发表于2018-04-13 13:14 被阅读35次

java反射机制

最近听说这么一句话啊,“无反射,不框架”,感觉说的是真的很有道理的哈。
反射真的是很多框架的源泉,我们平时做业务开发的时候,可能很少用到反射机制,但是在框架中,反射机制还是很有价值的。

首先我们定义一个student实体类:

public class Student {

    private int id;
    private String name;
    private String school;


    public Student() {
        this.id = id;
        this.name = name;
        this.school = school;
    }

    public Student(int id, String name, String school) {
        this.id = id;
        this.name = name;
        this.school = school;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school;
    }
}

反射中三种获取对象方式:

        //第一种
        Student stu1 = new Student();
        Class stuClass = stu1.getClass();
        System.out.println(stuClass.getName());

        //第二种
        Class stuClass2 = Student.class;
        System.out.println(stuClass == stuClass2);


        //第三种方式获取Class对象
        try {
            Class stuClass3 = Class.forName("reflex.Student");//注意此字符串必须是真实路径,就是带包名的类路径,包名.类名
            System.out.println(stuClass3 == stuClass2);//判断三种方式是否获取的是同一个Class对象
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        //打印所有构造方法
        Constructor[] conArray = stuClass.getConstructors();
        for (Constructor c : conArray) {
            System.out.println(c);
        }

        Constructor con = stuClass.getConstructor(null);
        Object obj = con.newInstance();

        con = stuClass.getConstructor(int.class, String.class, String.class);
        System.out.println(con);
        con.setAccessible(true);
        obj = con.newInstance(1, "张三", "黑大");
        Student zz = (Student) obj;
        System.out.println(zz.getName());

        //获取方法
        //Method m = stuClass.getMethod("show",String.class);

        //获取私有方法
        //m = stuClass.getDeclaredMethod("show4", int.class);
        //m.setAccessible(true);//解除私有限定
        //Object result = m.invoke(obj, 20);

获取所有构造方法,还有就是动态的调用一些方法,或者动态调用私有方法~

相关文章

  • Java反射机制入门

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

  • 反射之一

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

  • 反射之二

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

  • Java基础之反射

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

  • 反射之三

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

  • java反射机制

    java的反射机制 1 JAVA的反射机制是什么?反射机制能做什么?反射机制的优点与缺点2 认识 Class...

  • Java中反射的用途

    Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在。灵活掌握Java反射机制,对大家以后学习框...

  • Chapter 13 . 反射机制

    阅读原文 Chapter 13 . 反射机制 13.1 Java反射机制研究及应用 Java Reflection...

  • 详解Java反射机制(Reflection)

    详解Java反射机制(Reflection) 反射机制的作用 JAVA反射机制是在运行状态中,对于任意一个类,都能...

  • Java 反射机制

    [1]. java反射详解[2]. Java Reflection(反射机制)详解[3]. 深入理解Java类型...

网友评论

      本文标题:java反射机制

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