Java反射技术

java反射

1. 什么是反射技术?
反射机制实在运行状态中,对任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用对象的方法和属性;这种动态获取的信息以及动态调用对方法的功能称为JAVA语言的反射机制。
2.反射机制能做什么?
-在运行时判断任意一个对象所属的类
-在运行时构造任意一个类的对象
-在运行时判断任意一个类所具有的成员变量和方法

JAVA中Class类和用法

原理:JAVA程序在运行时,系统一直对所有的对象进行所谓运行时类型标识,即所谓的RTTI。这项信息记录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类就是Class类。这个Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建。

例如你创建一个human,那么Java会生成一个内容是Human 的Class类的对象

Class类不能使用new来创建,这个对象是JVM创建的,因为这个类没有public构造函数。
  1. Class类原理
    在object这个类中有一个方法:getClass()这个方法是用来取得该类已经被实例化了的对象的Class的引用,这个引用指向是Class类的对象。我们自己无法生成一个Class对象,而这个Class类的对象实在当各类被调用时由JVM
如何获得一个Class类对象。
public static void main(String[] args) {
    System.out.println("Hello World!");
    //第一种方法
    try {
        Class obj = Class.forName("Shape");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

    //第二种方法
    Shape shape =new Shape();
    Class obj = shape.getClass();
    Class obj1 = obj.getSuperclass();//这个函数作用时获取shape父类的类型

    //第三种方法
    Class obj2 = Shape.class;
}
三使用Class类的对象来生成目标类的实例对象

//通过字符串的方式创建一个类,就得使用Class对象
Class rectangle =Class.forName(“Shape”);
Shape rectInstanc = (Shape)rectangle.newInstance();
System.out.println(rectInstanc.area(100,200));
使用泛型化Class引用生成带类型的目标实例;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值