Java Interface,反射

來源:互聯網
上載者:User

標籤:

  先看代碼,

  

package reflect;//Class Wordpublic class Word implements OfficeAble{public static void main(String[] args){}public void start(){System.out.println("word...start...");}public Word(){}}package reflect;//Class Excelpublic 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 {@Testpublic 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即可。

Java Interface,反射

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.