您的位置:首页 > 编程语言 > Java开发

JAVA反射

2016-05-12 15:22 363 查看
import java.lang.reflect.*;

public class TestReflection {
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {

String str = "T";
Class c = Class.forName(str);//返回与带有给定字符串名的类或接口相关联的 Class 对象。
Object o = c.newInstance();//创建此 Class 对象所表示的类的一个新实例。
Method[] methods = c.getMethods();
for(Method m : methods) {
if(m.getName().equals("mm")) {
m.invoke(o);//对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。
}
if(m.getName().equals("m1")) {
m.invoke(o,  1, 2);
for(Class paramType : m.getParameterTypes()) {//对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。
System.out.println(paramType.getName());
}
}
if(m.getName().equals("getS")) {
Class returnType = m.getReturnType();//返回一个 Class 对象,该对象描述了此 Method 对象所表示的方法的正式返回类型。
System.out.println(returnType.getName());
}
}
}
}
class T {
static{
System.out.println("T loaded!");

}

public T() {
System.out.println("T constructed!");
}

int i;
String s;

public void m1(int i ,int j) {
this.i = i + j;
System.out.println(this.i);
}

public void mm() {
System.out.println("m invoked");
}

public String getS() {
return s;
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: