服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

一个反射的简单例子


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

扫描关注微信公众号