1、反射-Class&ClassLoader
Class类
1、可以得到信息:某个类的数据成员、方法和构造器、某个类实现了那些接口
对于每个类来说,JRE都为其保留一个不变的Class类型的对象
一个Class类型的对象包含特定某个类有关的信息
2、Class对象只能由系统建立
3、一个类再JVM中只会有一个Class实例
4、每个类都会记得自己由那个Class实例生成
得到Class对象
1、通过.class
Class clazz = null; clazz = Person.class;
2、通过getClass()方法
Class clazz = null; clazz = new Person().getClass();
3、通过Class对象的forName()静态方法获取:全类名的方式
Class clazz = null; try { clazz = Class.forName("refelect.Person"); } catch (ClassNotFoundException e) { e.printStackTrace(); }
Class类常用的方法
public static Class<?> forName(String className) |
返回指定类名name的Class对象 |
public T newInstance() |
调用缺省的构造函数,返回Class对象的一个实例 |
public String getName() |
返回此Class对象所表示的实体名称 |
Class<? super T> getSuperclass() |
返回当前Class对象对象的父类的CLass对象 |
Class<?>[] getInterfaces()
|
获取当前Class对象接口 |
public ClassLoader getClassLoader() |
返回此类的类加载器 |
public class Person { String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Person(String name, int age) { this.name = name; this.age = age; } public Person() { } }
newInstance()方法:调用的是无参的构造器
Class clazz = Class.forName("refelect.Person"); //利用Class的newInstance()方法来创建一个对象 Object o = clazz.newInstance(); System.out.println(o);
ClassLoader
解析类路径下的文件
JDBC连接数据的相关获取的方法