反射
- 反射是什么?有什么用?
运行时加载一个类;可以获取该类的所有属性和方法;对于任意一个该类对象,都能调用它的方法和属性;一个类加载后,就会生成一个class对象,用于访问存储于方法区的数据结构 - 如何获取class对象
- 类名.class
- 对象.getClass()
- Class.forName(name);
- 获取类的信息
构造方法
方法
属性 - 通过反射创建对象
class.newInstance()
获取Constructor对象,调用Constructor对象的newInstance();可以根据获取的Constructor调用相应的构造方法创建对象 - 调用方法
Method method = class.getMethod(name);
method.invoke(obj, param); - 访问成员变量
class.getField()
泛型
- 泛型是什么?
在类、接口或者方法中加上<T>代表一种未知类型 - 泛型的表现形式?
在类或者接口中声明未知类型,是Object的子类,对象类型的声明,使用方法跟其他对象一样,可以声明变量,作为方法返回值类型,方法参数类型
List<String> list = new ArrayList<String>();
class A<T>{} class Entry<K,V>{}
类型绑定 class A<T extends B>{} class Entry<K extends X, V extends Y>{} 对填充的泛型加以限制,使用泛型变量T的时候可以使用限制类型B内部的函数 - 泛型的好处?
不用类型强制转换,编码期就可以检查类型是否匹配 - 通配符
?无边界通配符 List<?> list = new ArrayList<String>();
T用来声明,?用来填充,两者作用不同