

public class ReflectDemo01 {
public static void main(String[] args) throws ClassNotFoundException {
getClassObject_03();
}
private static void getClassObject_03() throws ClassNotFoundException {
String className="com.in.reflect.Person";
Class clazz = Class.forName(className);
System.out.println(clazz);
}
private static void getClassObject_02() {
Class clazz = Person.class;
Class clazz1 = Person.class;
System.out.println(clazz==clazz1);
}
public static void getClassObject_01() {
Person p = new Person();
Class clazz =p.getClass();
Person p1 = new Person();
Class clazz1 = p1.getClass();
System.out.println(clazz1==clazz);
}
}
private static void creatObject_02() throws ClassNotFoundException, Exception, SecurityException {
// com.in.reflect.Person p = new com.in.reflect.Person("小恰",11)
String name = "com.in.reflect.Person"
Class clazz = Class.forName(name)
//获取指定的构造函数对象
Constructor constructor = clazz.getConstructor(String.class,int.class)
//通过该构造器对象的newInstance方法进行对象的初始化
Object obj = constructor.newInstance("小妹",55)
}
private static void creatObject_01() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
//早期 new 的 时候根据被new 的类的名称 寻找该类的字节码文件并加载进内存
// 并创建该字节码文件对象 并接着创建该字节码文件的对应的Person对象
com.in.reflect.Person p = new com.in.reflect.Person()
//现在
String name = "com.in.reflect.Person"
//找寻该名称类文件 并加载进内存 并产生class对象
Class clazz = Class.forName(name)
//如何产生该类的对象
Object obj = clazz.newInstance()
}
private static void getFieldDemo() throws NoSuchFieldException, SecurityException, ClassNotFoundException, Exception, IllegalAccessException {
Class clazz = Class.forName("com.in.reflect.Person")
Field field = null
field = clazz.getDeclaredField("age")
//对私有字段的访问取消权限检查 暴力访问 不合适 因为别人选择私有 但是可以进行强力访问
field.setAccessible(true)
Object obj = clazz.newInstance()
field.set(obj, 89)
Object o = field.get(obj)
System.out.println(o)
System.out.println(field)
// com.in.reflect.Person p = new com.in.reflect.Person()
// p.age=30
}
private static void getMethodDemo_3() throws Exception {
Class clazz = Class.forName("com.in.reflect.Person");
Method method = clazz.getMethod("paramMethod", String.class,int.class);
Object obj = clazz.newInstance();
method.invoke(obj, "xi",11);
}
private static void getMethodDemo_2() throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, Exception, InvocationTargetException {
Class clazz = Class.forName("com.in.reflect.Person");
Method method = clazz.getMethod("show", null);
Constructor constructor = clazz.getConstructor(String.class,int.class);
Object obj = constructor.newInstance("笑话",11);
method.invoke(obj, null);
System.out.println(method);
}
private static void getMethodDemo() throws ClassNotFoundException {
Class clazz = Class.forName("com.in.reflect.Person");
Method[] methods = clazz.getMethods();
methods = clazz.getDeclaredMethods();
for(Method method:methods) {
System.out.println(method);
}
}
MainBoard mb = new MainBoard();
mb.run();
File configFile = new File("pci.properties");
Properties prop = new Properties();
FileInputStream fi = new FileInputStream(configFile);
prop.load(fi);
for(int x=0;x<prop.size();x++) {
String pciName = prop.getProperty("pci"+(x+1));
Class clazz = Class.forName(pciName);
PCI p = (PCI) clazz.newInstance();
mb.usePCI(p);
}
fi.close();
public class Mainboard {
public void run() {
System.out.println("main board run....");
}
public void usePCI(PCI p) {
if (p != null) {
p.open();
p.close();
}
}
}
public interface PCI {
public void open() ;
public void close();
}
public class SoundCard implements PCI{
public void open() {
System.out.println("sound打开");
}
public void close() {
System.out.println("sound关闭");
}
}
pci.properties 配置文件
pci1=com.in.reflect.SoundCard