java載入類
㈠ java如何載入一個外部的類或class文件
首先import 類,之後object來裝Class.forName()。inner.現在這object有了import類的所有方法
這forName里的路徑該寫你的類的名字,如果在包里要加包名
㈡ java中關於類載入。
首先要有該類的class文件所在的文件夾
然後,用classLoader載入這個文件夾中的所有以class結尾的文件,然後調用這個class對象的isAnnotationPresent({註解}.class).判斷是不是有加註解
class類也可以通過反射查找到這個類或者這個方法上有沒有加這個註解。但這是通過類找到註解
主要是想通過註解找到加了這個註解的所有類,
㈢ java程序什麼是類載入
你可以了解一下 深入理解java虛擬機,
java類載入 是因為在運行時當它需要引用某個類的時候,會先去載入這個類,就是去讀這個class文件到內存裡面來,現在還沒有創建這個類的實例,
你可以理解為 你寫的java代碼在編譯成class文件後,並沒有去執行,或者去引用他,只有程序運行時它將要使用這個類的時候才會去讀取這個class文件,這時候叫做類載入,當緩存了這個類文件之後,後面的創建類的時候都會去引用它,因為類載入是運行是載入,所以java代碼在運行時是有辦法修改的,同樣java類載入也允許載入一個遠程的class文件,也代表它是支持程序不停止時更新程序代碼的。
㈣ Java 如何顯示 載入類名
程序沒有問題,是你的環境變數沒有設置,特別是CLASSPATH。
具體的環境變數設置方法如下:
1.右擊「我的電腦」,點擊「屬性」:
選擇「高級」選項卡,點擊「環境變數」:
2.在「系統變數」中,設置3項屬性,
JAVA_HOME,PATH,CLASSPATH(不分大小寫)
JAVA_HOME指明JDK安裝路徑,就是剛才安裝時的路徑C:\Program Files\Java\jdk1.5.0_06,此路徑下包括lib,bin,jre等文件夾(此變數最好設置,因為以後運行tomcat,eclipse等都需要依*此變數);
Path使得系統可以在任何路徑下識別java命令,
設為:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
CLASSPATH為java載入類(class or lib)路徑,只有類在classpath中,java命令才能識別,設為:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar (要加.表示當前路徑)
%JAVA_HOME%就是引用前面指定的JAVA_HOME。
3.「開始」->;「運行」,鍵入「cmd」:
4.鍵入命令「java -version」,出現畫面,說明環境變數配置成功.
㈤ java重新載入class文件
Java類的載入是動態的,它並不會一次性將所有類全部載入後再運行,而是保證程序運行的基礎類(像是基類)完全載入到jvm中,至於其他類,則在需要的時候才載入。這當然就是為了節省內存開銷。
Java的類載入器有三個,對應Java的三種類:
Bootstrap Loader // 負責載入系統類 (指的是內置類,像是String,對應於C#中的System類和C/C++標准庫中的類)
|
- - ExtClassLoader // 負責載入擴展類(就是繼承類和實現類)
|
- - AppClassLoader // 負責載入應用類(程序員自定義的類)
三個載入器各自完成自己的工作,但它們是如何協調工作呢?哪一個類該由哪個類載入器完成呢?為了解決這個問題,Java採用了委託模型機制。
委託模型機制的工作原理很簡單:當類載入器需要載入類的時候,先請示其Parent(即上一層載入器)在其搜索路徑載入,如果找不到,才在自己的搜索路徑搜索該類。這樣的順序其實就是載入器層次上自頂而下的搜索,因為載入器必須保證基礎類的載入。之所以是這種機制,還有一個安全上的考慮:如果某人將一個惡意的基礎類載入到jvm,委託模型機制會搜索其父類載入器,顯然是不可能找到的,自然就不會將該類載入進來。
我們可以通過這樣的代碼來獲取類載入器:
ClassLoader loader = ClassName.class.getClassLoader();
ClassLoader ParentLoader = loader.getParent();
注意一個很重要的問題,就是Java在邏輯上並不存在BootstrapKLoader的實體!因為它是用C++編寫的,所以列印其內容將會得到null。
前面是對類載入器的簡單介紹,它的原理機制非常簡單,就是下面幾個步驟:
1.裝載:查找和導入class文件;
2.連接:
(1)檢查:檢查載入的class文件數據的正確性;
(2)准備:為類的靜態變數分配存儲空間;
(3)解析:將符號引用轉換成直接引用(這一步是可選的)
3.初始化:初始化靜態變數,靜態代碼塊。
這樣的過程在程序調用類的靜態成員的時候開始執行,所以靜態方法main()才會成為一般程序的入口方法。類的構造器也會引發該動作。
㈥ 怎麼理解java中的靜態載入類和動態載入類
一.什麼是動態載入類 什麼是靜態載入類
Class.forName 不僅表示類的類類型,還代表了動態載入類。編譯時載入是靜態載入類,
運行時載入是動態載入類。
二.為何要使用動態載入類
我們寫了一個程序 並沒有寫A類和B類以及start方法?
㈦ 在java中一般需要載入的類有哪些
這個你不用知道的,到你用到類裡面的東西的時候,如果你沒有載入那個類,編譯程序會提示你加上的。
㈧ java默認載入哪些類
您好
1:不是。System是java.lang包中的一個類,而不是io包。outprint是定義在System類中的靜態方法,所以可以直接使用System調用。
2:系統自動載入的是java.lang.*,而不是io包。如果要使用io包中的內容,需要import java.io.*,這樣,你可以使用諸如InputStream等類。
3:自動載入的包有java.lang.*,其他的包需要手動載入。當然,新版本的JDK可能會有新的改變。
㈨ java中類載入的兩種方法是什麼
java類有兩種方法一種是類方法就是用static修飾的,一種是實例方法,就是沒有static修飾的方法