/*
* 获取字节码对象的方式:
* 1,Object 类中的getClass方法。
* 想要用这种方式必须要明确具体的类,并且创建对象。
*/
public static void getClassObject_1() {
Person p = new Person();
Class clazz = p.getClass();
Person p1 = new Person();
Class clazz1 = p1.getClass();
6、电脑运行:每次添加一个设备,都需要修改代码传递一个新创建的对象。然而,可以不修改代码,完成这个动作。不用new来完成,而是直接获取其class文件。在内部实现创建对象的动作。
//主板:
package cn.itcast.reflect.test;
public class Mainboard {
public void run() {
System.out.println("主板运行!!");
}
public void usePCI(PCI p) {
if (p != null) {
p.open();
p.close();
}
}
}
//声卡
package cn.itcast.reflect.test;
public class SoundCard implements PCI{
public void open() {
System.out.println("sound open");
}
public void close() {
System.out.println("sound close");
}
}
//网卡
package cn.itcast.reflect.test;
public class NetCard implements PCI{
@Override
public void open() {
System.out.println("net open");
}
@Override
public void close() {
System.out.println("net close");
}
}
//PCI
package cn.itcast.reflect.test;
public interface PCI {
public void open();
public void close();
}
//配置文件--pci.properties
pci1 cn.itcast.reflect.test.SoundCard
//电脑运行
package cn.itcast.reflect.test;
import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;
/*
* 电脑运行
*/
public class ReflectTest {
public static void main(String[] args) throws Exception {
Mainboard mb = new Mainboard();