一个反射的简单例子
2008-01-05 08:37:31 来源:WEB开发网核心提示:一般程序都很少用到反射,下面是一个简单的用到反射的例子import java.lang.reflect.*;class loadclasspublic class reflecttest { static { System.out.PRintln("Class reflecttest loaded&
一般程序都很少用到反射,下面是一个简单的用到反射的例子
import java.lang.reflect.*;
class loadclass
public class reflecttest {
static
{
System.out.PRintln("Class reflecttest loaded");
}
public static void staicMethod()
{
System.out.println("staticMethod Called");
}
public void instanceMethod()
{
System.out.println("instanceMethod Called");
}
public static void main(String[] args) {
Class c=reflecttest.class;
try {
Method method = c.getMethod("staicMethod", null);
method.invoke(c,null);
method.invoke(c.newInstance(),null);
method=c.getMethod("instanceMethod",null);
//method.invoke(c,null);
//将抛出异常IllegalArgumentException:object is not an instance of declar
ing class
method.invoke(c.newInstance(),null);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
这仅仅是为了测试,没有实际的用处,不过至少说明了一个问题,静态方法可以供
类或者实例调用,而实例方法不可以由类调用 。下面的程序实现一个功能
从命令行输入一个类名,输入它的所有方法。
import java.lang.reflect.*;
public class getMethod{
public static void main(String[] args) {
if (args.length!=1)
{
System.out.println("Format: java getMethod classname");
return;
}
Class c=null;
try {
c=Class.forName(args[0]);
}
catch (ClassNotFoundException ex) {
System.out.println("Class not found");
return;
}
Method[] method=c.getMethods();
更多精彩
赞助商链接