反射机制
Java由于存在反射机制,使得Java变得有些动态,在程序运行的时候可以改变程序的结构。
反射机制中主要是调用Class+名称=Class.forname(要调用类的路径),这个Class类就像一面镜子,通过这面镜子我们可以获得我们想要类的信息。
还可以使用newinstance方法,User u = clazz.newInstance();其本质是调用了对象的无参构造方法。
当然可以先生成构造器,然后调用类的有参构造方法。
Constructor<User> c = clazz.getDeclaredConstructor(int.class,int.class,String.class);
User u2 = c.newInstance(1001,18,"");
反射机制还可以读取注解
可以使用JavaCompiler,以及Runtime调用执行类。
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
int result = compiler.run(null, null, null, "c:/myjava/HelloWorld.java");
System.out.println(result==0?"编译成功":"编译失败");
//通过Runtime调用执行类
// Runtime run = Runtime.getRuntime();
// Process process = run.exec("java -cp c:/myjava HelloWorld");
//
// InputStream in = process.getInputStream();
// BufferedReader reader = new BufferedReader(new InputStreamReader(in));
// String info = "";
// while((info=reader.readLine())!=null){
// System.out.println(info);
// }