zoukankan      html  css  js  c++  java
  • Java Interface,反射

      先看代码,

      

    package reflect;
    //Class Word
    public class Word implements OfficeAble{
    	public static void main(String[] args){
    		
    	}
    	public void start(){
    		System.out.println("word...start...");
    	}
    	public Word(){
    
    	}
    }
    
    package reflect;
    //Class Excel
    public class Excel implements OfficeAble{
    	public static void main(String[] args){
    		
    	}
    	public void start(){
    
    	}
    	public Excel(){
    
    	}
    }
    
    package reflect;
    //OfficeAble接口,由Word和Excel等类来实现
    public interface OfficeAble {
    	public void start();
    }
    
    //测试方法
    package reflect;
    
    import org.junit.Test;
    
    public class Test01 {
    	@Test
    	public void testor() throws ClassNotFoundException, InstantiationException, IllegalAccessException{
    		//动态加载类,在运行时刻加载
    //		Class a = Class.forName("reflect.Word");
    		Class a = Class.forName("reflect.Excel");
    		System.out.println("a:"+a);//a:class reflect.Excel
    		//通过类类型,创建该类对象
    		OfficeAble oa = (OfficeAble)a.newInstance();
    		oa.start();
    	}
    	
    }
    

      

    java接口的好处是显而易见的,比如Class Word和Class Excel都是实现了OfficeAble接口,那么比如要调用Word.start()方法的时候,实例化Word类的时候,不一定强制转换为Word,而是可以直接强制转换为OfficeAble类型,然后调用start()方法。唯一需要多做的工作就是在Class.forName()的时候需要传入要具体使用的类,在这个例子中传入的参数就是 "package.ClassName",即"reflect.Word";而如果需要实例化的是Excel,那么只要在加载类的时候吧ClassName修改为Excel即可。

  • 相关阅读:
    网站首页的设计
    短网址服务的构建
    分布式服务框架:Zookeeper
    Hadoop数据传输工具:Sqoop
    规则引擎简介
    HadoopDoctor:来自腾讯数据仓库TDW的MR诊断系统
    Hermes:来自腾讯的实时检索分析平台
    Mdrill:来自阿里的多维快速查询工具
    Saiku操作界面的简化
    Saiku OLAP
  • 原文地址:https://www.cnblogs.com/Sunnor/p/4478966.html
Copyright © 2011-2022 走看看