|
一般程序都很少用到反射,下面是一个简单的用到反射的例子 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();
|