1、什么是反射?
Java语言的反射机制是通过Java对象动态获取类的信息及动态调用对象的方法。
l 反射API的基本原理是Java类和运行时对象知道关于它们自己的信息,通常用于开发复杂的应用程序,如JavaBean、可视化开发环境、分布式调试器等。
2、JAVA的反射机制能实现什么功能?
在运行时断任意一个对象所属的类;
获取类的信息,如类的方法、构造方法、超类、修饰符、成员变量、常量;
在运行时构造任意一个类的对象;
在运行时判断任意一个类所具有的成员变量和方法;
在运行时调用任意一个对象的方法;
生成动态代理。
3、反射在哪个包中?
java.lang.reflect包中
4、请说说下列类的功能:
1 Class类:代表一个类。
此类的对象表示当前正在JVM中执行的类和接口。
Class类没有构造方法,它是Object类的扩展类,且从Serializable实现。
方法:
假定有一个类:Student,对象:stud,创建Class类:
Class c = stud.getClass();
查找Student的超类:
Class superClass = c.getSuperClass();
编译时知道类名,获取Class对象:
Class c = Sudent.class;
编写时不知道类名,获取Class对象:
Class c = Class.forName(strName)
2 Field类:类的成员变量。
该类用来获取有关类中所定义的字段的信息
主要方法如下:
Object get(Object obj) :返回指定对象字段的值.
long getLong(Object obj) :获取基本类型的静态或实例字段的值。
int getModifiers():返回字段的 Java 语言修饰符。
String getName():返回字段的名称
Class<?> getType() :返回字段的声明类型。
boolean isEnumConstant():如果此字段表示枚举类型的元素,则返回 true;否则返回 false。
void set(Object obj, Object value) :将指定字段设置为指定的新值。
3 Method类:类的方法。
该类用于查找和访问类或接口中所定义的公有类方法和实例方法,也可在运行时动态调用其中的方法。
Method类是AccessibleObject类的扩展类,从 Member接口实现
主要方法:
int getModifiers() :以整数形式返回方法的 Java语言修饰符。
String getName() :以 String形式返回方法名称。
Class<?> getReturnType():返回方法的返回类型。
int getModifiers():返回方法的 Java 语言修饰符。
Class<?>[] getExceptionTypes():返回方法抛出的异常类型
4 Constructor类:类的构造方法。
访问和收集Class对象的构造方法的有关信息。Constructor类是AccessibleObject类的扩展类,从Member接口实现。
主要方法如下:
int getModifiers(): 以整数形式返回构造方法的 Java语言修饰符
String getName():以字符串形式返回此构造方法的名称。
Class<?>[] getParameterTypes():
返回一组 Class 对象,这些对象表示构造方法的形参类型
4 Array类:提供动态创建数组及访问数组元素的静态方法。
Array类是Object类的扩展类。动态创建和访问数组。
newInstance():创建新数组
get():获取给定索引处的对象
set():将给定索引处的元素设置为给定对象
4、什么是泛型?
将原本确定不变的数据类型参数化。其本质是参数化类型,即所操作的数据类型被指定为一个参数。
5、 泛型的好处什么?
好处:提高Java应用程序的类型安全、可维护性、可靠性
泛型类
由类型参数修饰的类称为泛型类
格式:数据类型<类型参数>