Java反射技术

来源:互联网 发布:js getelementbyid 编辑:程序博客网 时间:2024/06/06 20:00

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引用生成带类型的目标实例;

原创粉丝点击