备战BAT面试的学习记录,整理了最近自己查漏补缺的知识点,总结出来和大家分享,如有错误,欢迎指出!
备战BAT面试
反射概述
反射就是把java类中的各种成分映射成一个个的Java对象
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
反射提供的功能:
在运行时判断任意一个对象所属的类
在运行时构造任意一个类的对象
在运行时判断任意一个类所具有的成员变量和方法
在运行时调用任意一个对象的方法
反射使用例子:
getClass方法
String name = "Huanglinqing";
Class c1 = name.getClass();
System.out.println(c1.getName());
输出:java.lang.String
获取类的成员
反射可已让我们获得私有方法、私有类和私有变量,并且生成调用它们。
获取类的构造函数
public class Test {
private int age;
private String name;
private int testint;
public Test(int age) {
this.age = age;
}
public Test(int age, String name) {
this.age = age;
this.name = name;
}
private Test(String name) {
this.name = name;
}
public Test() {
}
下面我们通过反射获取这些构造方法
获取类的所有构造方法
Test test = new Test();
Class c4 = test.getClass();
Constructor[] constructors ;
constructors = c4.getDeclaredConstructors();
我们可以通过getDeclaredConstructor()方法传参获取特定参数类型的构造方法
除此之外,还能调用构造函数生成新的对象,调用私有方法,获取私有变量等。
例如:
方法名 | 功能 |
---|---|
.getClass() | 获取类变量 |
.newInstance() | 获得新实例 |
.getName() | 获取类的名称 |
.getMethods() | 获取所有方法 |
.getDeclaredMethods() | 获取自己申明的方法 |
.getDeclaredFields() | 获取类中的属性 |
.getType() | 获取成员变量的类型 |
.getConstructors() | 获取构造方法列表 |
.getParameterTypes() | 获取参数列表的参数类型 |