反射对象的创建
package 多线程;
public class Thread1 extends Thread{
@Override
public void run() {
System.out.println(this.getClass());
try {
//通过this对象.getClass创建反射对象,再通过.newInstance()创建对象。
Thread thread4 = (Thread) this.getClass().newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
Thread1 thread = new Thread1();
//通过类名.class创建反射对象,再通过.newInstance()创建对象。
Thread1 thread1 = Thread1.class.newInstance();
//通过Class.forName传入全类名,再通过.newInstance()创建对象。
Thread thread2 = (Thread) Class.forName("多线程.Thread1").newInstance();
thread1.start();
thread2.start();
thread.start();
}
}
总结:先获得class对象,再通过newInstance()创建对象。