Java反射之基础概念

0.实例准备ide

package com.blueStarWei.invoke;

public class Student {
    private String name;
    
    public Student() { }

    public Student(String name) {
        super();
        this.name = name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return "Student [name=" + name + "]";
    }
}

 

 

1. 什么是反射this

  反射是在运行时(非编译时)动态获取类型的信息(好比:接口信息、成员信息、方法信息等),而后根据这些获取的信息建立对象、访问修改为员、调用方法。spa

 

2. 获取Class类的方式(3种):代理

//方式一:Class.forName("包名.类名")
Class stu1 = Class.forName("com.blueStarWei.invoke.Student");
//方式二:类名.class
Class stu2 = Student.class;
//方式三:实例.getClass()
Class stu3 = new Student().getClass();

 

3. 建立实例对象code

Student student = (Student) stu.newInstance();

备注:1)该方法经过无参构造的方式建立实例对象

           2)New一个对象的时候,类能够没有被加载;使用newInstance()方法的时候,必须保证这个类已经加载且已经链接【经过Class.forName()实现】。blog

Class clazz = Class.forName("com.blueStarWei.invoke.Student");
Student student1 = (Student) clazz.newInstance();
//等价于
Student student2 = new Student();

 

4. 反射的做用接口

  4.1 判断任意一个对象所属的类;get

  4.2 判断任意一个类所具备的成员变量和方法;编译

  4.3 调用任意对象的方法;

  4.4 构造任意一个类的对象;

  4.5 生成动态代理操做。

相关文章
相关标签/搜索