Java学习之反射机制的理解

博客:http://www.cnblogs.com/Quincy/archive/2011/06/19/2084557.html中对反射机制的定义、对应的API以及部分的代码很详细,因此本人只是通过对此博客的学习,写了简单的代码进行部分的了解:
1.编写目的
   定义一个类T,以前的想法是直接使用new T()来初始化类,目前通过ClassLoader类的加载,来动态实现类的初始化。
 
2.代码:
import java.lang.reflect.Method;
public class TestReflection {
 
 public static void main(String[] args) throws Exception {
  String str = "T";
  Class c = Class.forName(str); //加载类,输出结果:T Loader!
  Object object = c.newInstance(); //初始化,类似于 new T(),输出结果:Constructor!
  
  //获取全部的方法
  Method[] methods = c.getMethods();
  for(Method method:methods){
   if(method.getName().equals("setI")){
    System.out.println(method.getName());//输出结果:setI
   }
   if(method.getName().equals("m")){
    method.invoke(object);  //反射机制,调用了m()方法,结果是:m invoke
   }
  }
  //获取对应的方法
  System.out.println(c.getMethod("getStr").getName());//输出结果:getStr
 }
}
class T{
 static{
  System.out.println("T Loader!");
 }
 
 int i;
 String str;
 
 T(){
  System.out.println("Constructor!");
 }
 
 public void setI(int i, int j){
  this.i = i + j;
  System.out.println("setI" + this.i);
 }
 
 public String getStr(){
  return null;
 }
 
 public void m(){
  System.out.println("m invoke");
 }
 
 @Override
 public String toString(){
  return "Override!";
 }
}
由于对反射机制研究不深,只是混乱理解,希望可以相互交流学习,也可以参考博客: http://www.cnblogs.com/Quincy/archive/2011/06/19/2084557.html

你可能感兴趣的:(java,反射机制)