标签:tde pack ast 作用 lin classpath 定义 苹果 反射
27.01_反射(类的加载概述和加载时机)
27.02_反射(类加载器的概述和分类)
27.03_反射(反射概述)
27.04_反射(Class.forName()读取配置文件举例)
分别有水果(Fruit)苹果(Apple)香蕉(Banana)桔子(Orange)榨汁(squeeze)
public class Demo2_Reflect {
/**
* 榨汁机(Juicer)榨汁的案例
* 分别有水果(Fruit)苹果(Apple)香蕉(Banana)桔子(Orange)榨汁(squeeze)
* @throws Exception
/
public static void main(String[] args) throws Exception {
/Juicer j = new Juicer();
//j.run(new Apple());
j.run(new Orange());*/
BufferedReader br = new BufferedReader(new FileReader("config.properties")); //创建输入流对象,关联配置文件.使用BufferedReader可以读取一行
Class<?> clazz = Class.forName(br.readLine()); //读取配置文件一行内容,获取该类的字节码对象
Fruit f = (Fruit) clazz.newInstance(); //通过字节码对象创建实例对象,clazz.newInstance()返回Object类型对象,所以需要类型转换得到(Fruit)
Juicer j = new Juicer();
j.run(f);
}
}
interface Fruit {
public void squeeze();
}
class Apple implements Fruit {
public void squeeze() {
System.out.println("榨出一杯苹果汁儿");
}
}
class Orange implements Fruit {
public void squeeze() {
System.out.println("榨出一杯桔子汁儿");
}
}
class Juicer {
public void run(Fruit f) {
f.squeeze();
}
}
27.05_反射(通过反射获取带参构造方法并使用)
27.06_反射(通过反射获取成员变量并使用)
27.07_反射(通过反射获取方法并使用)
27.08_反射(通过反射越过泛型检查)
27.09_反射(通过反射写一个通用的设置某个对象的某个属性为指定的值)
27.10_反射(练习)
27.11_反射(动态代理的概述和实现)
标签:tde pack ast 作用 lin classpath 定义 苹果 反射
原文地址:https://www.cnblogs.com/CampNouBallBoy/p/9277393.html