public class TestReflection{
public static coid main(String[] args){
String str="T";
try{
//把名字叫str的类装载到内存
Class c=Class.forName(str);
//new一个对象 访问异常
Object o=c.newInstance();
//获取C里面所有的方法
Method[] methods=c.getMethods();
for(Method m:mehtods){
System.out.println(m.getName());
if(m.getName().equals("mm")){
//调用mm()方法 invoke是一个可变方法
m.invoke(o);
}
if(m.getName().equals("m1")){
//返回有几个参数 每个参数是什么类型
m.getParameterTypes();
//调用可变个参数
m.invoke(o,1);
//拿到参数的类型
for(Class paramType:m.getParameterType()){
System.out.println(paramType.getName());
}
//拿到函数的返回类型
if(m.getName().equals("getS")){
Class returnType=m.getReturnType();
System.out.Println(returnType.getName());
}
}
}
}catch(ClassNotFoundException e){
e.printStackTrace();
}
}
}
class T{
static{
System.out.println("T loaded!");
}
public T(){
System.out.println("T constructed!");
}
int i;
String s;
public void m1(int i){
this.i=i;
System.out.println(this.i);
}
public void mm(){
System.out.Println("Mm invoked!");
}
public String getS(){
return s;
}
}