Java-反射之動態載入類

來源:互聯網
上載者:User

標籤:start   nbsp   cat   而且   stat   string   example   stack   oid   

 在Java當中,載入類分為動態載入和靜態載入,其中,在編譯時間刻載入類叫做靜態載入類,在運行時刻載入類叫做動態載入類。

 產生Class對象的方式中,有一個是Class.forName("類的全稱"),這個不僅僅表示類的類類型,而且還表示了動態載入類。

 1 package com.example.demo; 2  3 public class Demo { 4     public static void main(String[] args) { 5         if (args[0].equals("word")) { 6             Word word = new Word(); 7             word.start(); 8         } 9         if (args.equals("Excel")) {10             Excel excel = new Excel ();11             excel.start();12         }13     }14 }

  比如說如上代碼:如果我們不建立Word類和Excel類的話,我們會發現這段代碼不能通過編譯,這是因為new方式建立對象是通過靜態載入類的,在編譯的時候把所有可能要用到的類載入進來,不論以後到底用不用它。這種方式有一個弊端:那就是我們必須把所有可能到的類載入進來,一旦發現有一個類沒有被載入進來,其他的類就不能使用。

  而動態載入則是,需要使用哪個類,我們就載入哪個類,不必要把所有的類載入進來。

1         try {2             //動態載入類,在運行時刻進行載入,編譯不會報任何錯誤3             Class c1 = Class.forName(args[0]);4             //通過類類型來建立類的對象--我想要載入的類必須都符合一個標準,也就是說要實現統一的介面5             OfficeAble officeAble = (OfficeAble)c1.newInstance();6         } catch (ClassNotFoundException e) {7             // TODO Auto-generated catch block8             e.printStackTrace();9         }

 

Java-反射之動態載入類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.