JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
Java程序在它开始运行之前并非被完全加载,其各个部分是在必需时才加载的。
package jia;
import java.util.Scanner;
class jia
{
static
{
System.out.println("a");
}
void draw()
{
System.out.println("draw");
}
}
public class Test1
{
public static void main(String[] args)
{
System.out.println("h");
try
{
Class a=Class.forName("jia.jia"); //在bin文件夹下找到类名为jia的class文件 只是类初始化,但没有调用构造函数
try
{
jia j=(jia) a.newInstance(); //调用构造函数
j.draw();
} catch (InstantiationException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e)
{
System.out.println("not");
e.printStackTrace();
}
}
}
Java也提供了另一种方法生成Class对象的引用 Class a=jia.class;jia j=(jia) a.newInstance(); 这种方法比forname更高效,且编译时就会检查,不需要try catch