反射机制(一)

定义

Java反射机制是在运行状态中,对于任意一个类,都能知道这个类的所有属性和方法;对于任意一个对象,都能调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。
反射就是把Java类中的各种成分映射成一个个的Java对象。

实现

image.png

好处

1、可以在程序运行过程中,操作这些对象
2、可以解耦,提供程序的可拓展性

获取class对象的方式

1、Class.forName("全类名"):将字节码文件加载进内存,返回Class对象(多用于配置文件中,将类名定义在配置文件中,读取文件,加载类)
2、通过类名.class(多用于参数传递)
3、对象.getClass();getClass()方法在Object类中定义(多用于对象的获取字节码的方式)
Person类

package reflect;

public class Person {
    private int age;
    private String name;

    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }
    public Person() {

    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

三种方式打印类名

package reflect;

public class reflectDemo1 {
    public static void main(String[] args) throws Exception{
        // 1. Class.forName("全类名");
        Class cls1 = Class.forName("reflect.Person");
        System.out.println(cls1);
        // 2.类名.class
        Class cls2 = Person.class;
        System.out.println(cls2);
        // 3.对象.getClass()
        Person p = new Person();
        Class cls3 = p.getClass();
        System.out.println(cls3);
    }
}

结果


1.png

结论

同一个字节码文件(*.class)在一次程序运行过程中,只会被加载一次,不论通过哪一种方式获取的Class对象都是同一个。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.1 框架的概念 ​ 半成品软件。可以在框架的基础上进行软件开发,简化编码。学习框架并不需要了解反射,但是要...
    AaFaa阅读 2,481评论 0 0
  • 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个...
    天使飞吧阅读 2,463评论 0 0
  • 深入理解Class对象 RRTI的概念以及Class对象作用 认识Class对象之前,先来了解一个概念,RTTI(...
    架构师springboot阅读 5,478评论 0 3
  • 本部分主要介绍:Java 的反射机制的原理及使用 先知知识点 Java 的 接口 (interface)对外提供规...
    sshentree阅读 1,702评论 0 1
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 13,596评论 0 11

友情链接更多精彩内容