免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 750 | 回复: 0
打印 上一主题 下一主题

不得不学的java反射 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-09 14:49 |只看该作者 |倒序浏览
做程序员总是会有很多的无可奈何,这是没有办法的事,重要的是你要扛过去.实现扛不了,没关系,请假吧,休息一下吧,来看看
http://danny1000.cublog.cn
,你就会好起来的,如果还是不行,只有最后一招了,炒老板鱿鱼.
1.定义一个接口
  public interface Vehicle{
      public void start();
      public String stop();
  }
2.实现这个接口
  public class Car implements Vehicle{
      private String motorman ;
      public Car(){
      }
      public Car(String motorman){
          this.motorman = motorman;
      }
      public void start(){
          System.out.println(motorman+"  Car start");
      }
      public String stop(){
          return motorman +"  Car stop";
      }
  }


  public class Train implements Vehicle{
      private String motorman ;
      public Train(){
      }
      public Train(String motorman){
          this.motorman = motorman;
      }
      public void start(){
          System.out.println(motorman+"  Train start");
      }
      public String stop(){
          return motorman +"  Train stop";
      }
  }
3.重要是看下面这个main函数
  import java.sql.Timestamp;
  import java.lang.reflect.Constructor;
  public class ReflectStudent {     
      public static void main(String[] args) throws Exception {
          //你可传任何一个实现该接口的实现类名字.如Car.
          String className = "Car";
          //类对象.
          Class clazz = Class.forName(className);
          //获得名字为className的构造对象.
          Constructor constructor =
               clazz.getConstructor(new Class[]{String.class});
         //通过构造对象获得名字为className的实例.
         Vehicle vehicle = (Vehicle)constructor.newInstance(new Object[]{"Jack"});
         vehicle.start();

         //回调的方法名.如stop.
         String methodName = "stop";
         //方法对象, 参数:方法名,这个方法的参数的类对象,如果这个方法没有参数,类对象是空.
         Method method  = clazz.getMethod(methodName,new Class[]{});
         //开始回调.参数:实例,回调方法参数的实例.
         String str = (String)method.invoke(vehicle,new Object[]{});
         System.out.println("str= "+str);
        
    }
}
4.控制台的结果:
  Jack Car start
  str= Jack Car stop
  如果className = Train,那么结果是Jack,Train start,Jack Train stop
5.看完之后,一定要提出你的宝贵意见.




本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/45398/showart_356750.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP