Java - 什么是java反射?

什么是反射?

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

总之就是:通过字节码文件对象,去使用该文件中的成员变量,构造方法,成员方法。

    要想解剖开一个类,就必须先获取该类中的字节码文件对象,

    而解剖使用的就是Class类中的方法,所以必须要先获取到每一个字节码文件对应的class类型的对象

  获取class类型对象的三种方式:

类文件:

//文件
class employee{
    public employee(){
        System.out.println("Employee的无参数构造方法执行");
}

    public employee(String name){
        This.name=name;
    }
};

第一种方法: 

//第一种方法:forName:返回与带有给定字符串名的类或者接口相关联的class对象
public class ReflectTest{
    public static void main(String[] args){
        class c1=class.forName("Employee");
        //c1引用保存内存地址指向堆中的对象,该对象代表的是Employee整个类
    }

}

第二种方法: 

//第二种方法:java中每个类型都有class属性
public class ReflectTest{
    public static void main(String[] args){
        class c2=Employee.class;
    }
}

第三种方法: 

//第三种方式: java语言中任何一个java对象都有getClass()方法
public class ReflectTest{
    public static void main(String[] args){
        Employee e=new Employee();
        Class c3=e.getClass();//
    }
    
}

在获取class类型的对象之后,就可以通过newInstance创建该类的对象(该类必须有无参数的构造方法)

public class ReflectTest{
    public static void main(String[] args){
        class c =class.forName("employee");
        //创建class对象所表示的类的一个新实例
        Object o=c.newInstance();//这里调用了Employee的无参数构造方法
        system.out.println(o);
    }
}

结果: 

 

 

由结果我们可以看出,通过newInstance()方法,调用了该类的无参构造方法。

评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值