什么是反射?一般用来做什么?

1、概念

反射机制指的是程序在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法。

2、作用

a) 获取一个Class对象

1) .getClass()方法,这是一个Object类定义的方法,涉及到强转,用通配符表示泛型可以避免强转。
2) 类名.class;返回类型为Class。
3) Class类的静态方法——Class.forName(String className),参数为类的全限定名。

b)实例化一个Class表示的类的对象

1)T  newInstance():创建此 Class 对象所表示的类的一个新实例。[返回为Object]先获取对应类的字节码文件对象,在用此Class类型的字节码文件对象调用newInstance()方法
实例化异常:指的是实例化对象的时候没有找到对应的构造方法
不合法异常:构造方法的访问权限不够

c)获取构造方法

1、获取字节码文件对象
2.1、Constructor getConstructor(Class... parameterTypes) 返回一个 Constructor 对象,它反映此 Class 对象所表示的类的指定【公共】构造方法。【只能获取被public 修饰的方法】
2.2、【获取指定的构造方法】getDeclaredContructor(Class... parameterTypes):【除了private修饰的,其他的都可以】
2.3、【获取无参的构造方法】Constructor constructor3 = cls.getDeclaredConstructor(null);Student stu3 = (Student) constructor3.newInstance(null);
3、T newInstance(Object... initargs) 使用此Constructor 对象表示的构造方法来创建该构造方法的声明类的新实例,并用指定的初始化参数初始化该实例。 【获取执行构造方法的访问权限修饰】:int getModifiers() 以整数形式返回此 Constructor 对象所表示构造方法的 Java 语言修饰符。【获取执行构造方法的名称】String getName() 以字符串形式返回此构造方法的名称。

d)获取成员变量

e)获取成员方法

你可能感兴趣的:(面试题)