反射
类的对象和类对象
1、类的对象:依据我们定义的类 new 出来的对象,也成为实例对象
2、类对象:是类加载的产物,包括(包名,类名,属性,方法,构造方法)
如何获取类对象?(三种方式)
获取类对象 方式:---》通过反射的技术获取类对象(会导致类先进行类加载)
① 通过 类的对象 获取 类对象
Student s = new Student();
Class c=s.getClass();//getClass()是 Object类中的方法
② 通过 类名.class 获取类对象
Class c=Student.class;
③ 通过 Class类中 静态方法 forName("包名.类名")
Class c=Class.forName("ref.Student");
注意:forName()中需要的是全类名,即 包名.类名
理解反射的一段代码:
class USBFactory {
public static USB makeUSB(String name) throws Exception {
Class c=Class.forName(name);//获取类对象
Object o = c.newInstance();//根据类对象调用newInstance()方法,产生类的对象
return (USB)o;//将类的对象转换为某种类型
}
}
interface USB{
void service();
}
class Fan implements USB{
public void service() {
System.out.println("通电--------旋转");
}
}
class Lamp implements USB{
public void service() {
System.out.println("通电--------照明");
}
}
class UDisk implements USB{
public void service() {
System.out.println("通电--------传输");
}
}