一、知识基础
java加载类进内存均是通过jvm的类加载器完成。java类在内存的唯一标志,其实是通过类加载器+类全名(包名+类名)。不同的类加载器加载同一个类是不会出现冲突的。
java的反射机制,是jdk提供的一套api,通过使用类加载器将指定的类动态加载进内存的方法。
二、目标
使用java反射机制创建一个实例对象,该类的构造方法的参数列表是可变长度的。
三、代码示例
try {
AInterface ai = Class.forName("com.sun.test.myapp.AClass", true,
Thread.currentThread().getContextClassLoader())
.asSubclass(AInterface.class)
.getDeclaredConstructor(String[].class).newInstance(new Object[] {
new String[] {"b", "c"}
});
System.out.println(ai.getClass().getSimpleName() + "::" + ai.getS0());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// T