通过反射使用Class.forname(“类名”)来根据实际需要加载类
使用newInstance()方法创建加载的类的实例对象.
如此做有助于实现解耦合,结合面向接口编程方法不再需要修改代码,通过修改类名就可以改变具体的实现类.
public class App {
public static void main(String[] args) throws ClassNotFoundException {
//通过反射
Class a=Class.forName("java.lang.String");
System.out.print(a.getName());
}
}
public class App {
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
//此处既可以是ArrayList也可以是List接口的其他子类
Class a=Class.forName("java.util.ArrayList");
//面向接口编程,动态生成实例对象
List a1=(List) a.newInstance();
a1.add("1");
System.out.print(a1);
}
}