Java:Class類的靜態方法forName()
在說明Class類的靜態方法forName()之前,先清楚有關Class類的幾個概念:
1、Class類封裝了類或介面的執行時狀態
Java程式在執行時,Java執行時系統一直對所有的物件進行所謂的執行時型別標識,這些標示紀錄了每個物件所屬的類。虛擬機器通常使用執行時型別資訊選擇正確方法去執行,用來儲存這些型別資訊的類是Class類。
2、Class型別的物件是載入類時自動建立的
Class 沒有公共構造方法。Class 物件是在載入類時由Java 虛擬機器以及通過呼叫類載入器中的 defineClass 方法自動構造的,因此不能顯式地宣告一個Class物件。
3、虛擬機器為每種型別管理一個獨一無二的Class物件
每個類(型)都有一個Class物件。執行程式時,Java虛擬機器(JVM)首先檢查所要載入的類對應的Class物件是否已經載入。如果沒有載入,JVM就會根據類名查詢.class檔案,並將其Class物件載入。
基本的 Java 型別(boolean、byte、char、short、int、long、float 和 double)和關鍵字 void 也都對應一個 Class 物件。 每個陣列屬於被對映為 Class 物件的一個類,所有具有相同元素型別和維數的陣列都共享該 Class 物件。一般某個類的Class物件被載入記憶體,它就用來建立這個類的所有物件。
那麼,我們如何獲得Class 的物件呢
通常是通過Object類(所有類的超類)定義的getClass()方法來獲取Class物件;
再者就是匹配一個Java型別的類物件,比如:如果T是一個Java型別,那麼T.class就代表了匹配的類物件;
第三種方法就是使用Class類的靜態方法,語法格式是:
static Class<?> forName(String name) throws ClassNotFoundException //返回給定全名的Class物件
或者:“
static Class<?> forName(String name, boolean how, ClassLoader ldr)
//返回給定全名的Class物件。物件使用由ldr指定的載入器載入。如果how為true,就初始化物件;否則不進行初始化
Class.forName(className)實際上是呼叫Class.forName(className,true, this.getClass().getClassLoader())。第二個引數,是指Class被loading後是不是必須被初始化。可以看出,使用Class.forName(className)載入類時則已初始化。所以 Class.forName(className) 可以簡單的理解為: 獲得字串引數中指定的類,並初始化該類 。
Class類的靜態方法forName()的應用
1、載入JDBC驅動
class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
2、使用AIDL與電話管理Servic進行通訊
Method method =Class. forName ( "android.os.ServiceManager" ).getMethod( "getService" ,String. class );
相關推薦
Java:Class類的靜態方法forName()
在說明Class類的靜態方法forName()之前,先清楚有關Class類的幾個概念: 1、Class類封裝了類或介面的執行時狀態 Java程式在執行時,Java執行時系統一直對所有的物件進行所謂的執行時型別標識,這些標示紀錄了每個物件所屬的類。虛擬機器通常使用執行時型別資
java基礎 靜態 static 問在多態中,子類靜態方法覆蓋父類靜態方法時,父類引用調用的是哪個方法?
xtend java pos main 靜態方法 show extends ava pri 多態 package com.swift.jiekou; public class Jicheng_Tuotai_jingtai_diaoyong { publ
關於java中父類靜態方法能否被之類重寫的問題
1. 先說結論: 不能被重寫 2. 為什麼?? ②. 所引用該方法的物件指向的都是記憶體中同一塊記憶體的資料, 已經寫死了呀, 那你還怎麼重寫呢 3. 靜態方法可以直接用類名呼叫這麼方便,為什麼不都設定為靜態屬性和方法? ①.靜態方法從屬於類, 可以通過類名直接呼叫, 在編譯
java類靜態方法測試
靜態方法是在new之前就已經載入到記憶體地址中了,再次new物件時候這些靜態屬性或者靜態方法不會再分配新的記憶體地址了,這些靜態屬性或者靜態方法在多個物件中是共用的。 public class Com
java Class-類載入的三種方法 以及類的初始化的六種方式 及終止執行的方式
1在命令列啟動虛擬機器jvm進行載入,2用class.forname()方法進行動態載入;3用ClassLoader.loadClass()進行動態載入;區別:用二方法載入時,還會對類進行解釋,執行其中的static語句塊; 用三方法時候,static語句塊
轉載--創建java常量類的方法
ret get ntc www 引用 lsi public field log 1 /** 2 * Method One 3 */ 4 interface ConstantInterface { 5 String SUNDAY
使用Java定義類的方法
wav pac puts 分數 bit port 定義類 system.in asc 一、訓練點: 類的方法定義和調用 二、需求: 輸入三門課的成績、計算平均分、計算總成績 1) 不使用類和方法 package cn.jbit.qq; import java.uti
Java File類常用方法及實例
獲取 而且 exist exc file類 註釋 sys 遞歸遍歷 cep 創建:createNewFile()在指定位置創建一個空文件,成功就返回true,如果已存在就不創建,然後返回false。mkdir() 在指定位置創建一個單級文件夾。mkdirs() 在指定位
Java抽象類/抽象方法
abs 技術分享 不用 加油 alt ext void mage round java抽象類的特點: *抽象類無法被實例化 *子類繼承抽象類然後實例化子類 *子類繼承了抽象類剋必須實現抽象類的中的抽象方法 *抽象類的定義 abstract class *** *抽象方法的定
Java 集合類常用方法
cti unknown nag ace 方法區 中比 thread arr 使用 Collection中的contains()方法和remove()方法。 boolean contains(Object o);該方法是用來判斷集合中是否包含某個元素,若包含,返回true,不
Java Map類常用方法
apple jdb 映射關系 所有 user while 字符串 關系 lan 關於Map集合中常用的方法: void clear(); 清空Map boolean containsKey(Object key); 判斷Map中是否包含這樣的key boolean cont
C#靜態類 靜態方法與非靜態方法比較
定義 都是 無法 不能 tro 就是 類的本質 bsp true 靜態類: 在類(class)上加入static修飾, 表示該類無法被實例化,並且該類中,無法實例化變量或函數。 那麽如果要在此靜態類中添加函數、變量、屬性,則必須都是靜態的。 靜態類的主要特性: 1:僅包含靜
Java-Parameter類常用方法詳解
這次主要整理下Java中Parameter類的常用方法 一、Parameter類的定義 Parameter類位於 java.lang.reflect 包中,主要用於在程式執行狀態中,動態地獲取方法引數資訊 在jdk8之前,編譯器會忽略我們編寫程式碼時設定的引數
Java Class類檔案結構
平臺無關性 Java是與平臺無關的語言,這得益於Java原始碼編譯後生成的儲存位元組碼的檔案,即Class檔案,以及Java虛擬機器的實現。不僅使用Java編譯器可以把Java程式碼編譯成儲存位元組碼的Class檔案,使用JRuby等其他語言的編譯器也可以把程式程式碼編譯成Class檔案,虛擬機
Java | 基礎歸納 | 靜態方法與例項方法的區別
靜態方法和例項方法的區別主要體現在兩個方面: 在外部呼叫靜態方法時,可以使用"類名.方法名"的方式,也可以使用"物件名.方法名"的方式。而例項方法只有後面這種方式。也就是說,呼叫靜態方法可以無需建立物件。 靜態方法在訪問本類的成員時,只允許訪問靜態成員(即靜態成員變數和靜態方法),而不允許訪問例項成員變數
Java | 基礎歸納 | 靜態方法與實例方法的區別
的區別 方法 方法名 則無 blog arch 靜態成員 java 類名 靜態方法和實例方法的區別主要體現在兩個方面: 在外部調用靜態方法時,可以使用"類名.方法名"的方式,也可以使用"對象名.方法名"的方式。而實例方法只有後面這種方式。也就是說,調用靜態方法可以無需創建對
Java String類 equals()方法的實現
1、貼原始碼,暫且自行閱讀 public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject insta
Java——Integer類的方法與實現,String和int的相互轉換
基本型別和包裝類的對應 以下的封裝類可以用於基本資料型別與字串的轉換 byte Byte short Short int
Java System類概述/方法
System: 1. 不需要建立物件,都是靜態的方法 2.out 對應的標準輸出流,此流已開啟,並準備好接受輸出資料。 通常,此流對應於顯示輸出或由主機環境或使用者指定的另一個輸出目標。 3. in 標準”輸入流。 該流已經開啟,準備提供輸入資料。 通
java 父類構造方法引數的有無對子類構造的影響
情況1:父類有無參構造方法時 子類可以無參構造方法也可以沒有無參構造方法,若無無參呼叫方法則需要顯示的呼叫super(引數); 情況2:父類中無無參構造方法時 子類一般不允許有無參構造方法,因為無參構造方法,構造時沒有引數傳入,而父類中沒有無參構造方法,子類中只