1. 在java中,怎麼實例化內部類
內部類的實例化方式如下例子所示:
public class Animal {
class Head{
}
}
測試如何實例化內部類:
public class TestInstanceInnerClass {
public TestInstanceInnerClass() {
Animal animal=new Animal();//首先實例化外部類
Head head=animal.new Head();//把內部類當成一個成員變數進行實例化
}
}
2. 如何實例化Java內部類
假設外部類叫Out,內部類叫In,那麼我們可以使用Out.In in = new Out().new In()來實例化內部類的對象,具體示例代碼如下:
class Out {
private int age = 12;
class In {
private int age = 13;
public void print() {
int age = 14;
System.out.println("局部變數:" + age);
System.out.println("內部類變數:" + this.age);
System.out.println("外部類變數:" + Out.this.age);
}
}
}
public class Demo {
public static void main(String[] args) {
Out.In in = new Out().new In();
in.print();
}
}
3. java類中定義的類怎麼 實例化
首先這是個內部類。
內部類只能在類裡面實例化
就你這個例子來說
publicclassa{
publicclassb{}
publica(){
bxx=newb();//這樣才可以。
}
}
例外的是,如果內部類是靜態的。可以其他類中實例化。
比如
publicclassa{
publicstaticclassb{}
}
a.bxx=newa.b();
4. JAVA 類名.class是什麼意思
ConfMgr.class是獲取ConfMgr的class對象,類型類指的是代表一個類型的類,因為一切皆是對象,幾種獲取class對象的方法:
1,所有的引用數據類型(類-類型)的類名、基本數據類型都可以通過.class方式獲取其 Class對象。
對於基本數據類型的封裝類還可以通過.TYPE 的方式獲取其 Class 對象,但要注意。TYPE 實際上獲取的封裝類對應的基本類型的 Class 對象的引用。
那麼你可以判斷出int.class==Integer.TYPE 返回 true,int.class==Integer.class 返回 false!通過這種方式不會初始化靜態域,使用.class、.TYPE 的方式獲取 Class對象叫做類的字面常量;
2,Class 的 forName(String name)傳入一個類的完整類路徑也可以獲得 Class 對象。
由於使用的是字元串,必須強制轉換才可以獲取泛型的Class<T>的 Class對象,並且必須獲取這個方法可能拋出的ClassNotFoundException異常。這種方法可以初始化靜態域。
3,還可通過類的對象實例下的getClass()方法來獲取Class對象,即 實例名getClass()
(4)java實例化class擴展閱讀
在一個面向對象的系統中,類(class)是數據和操作數據的方法的集合。數據和方法一起描述對象(object)的狀態和行為。
每一對象是其狀態和行為的封裝。類是按一定體系和層次安排的,使得子類可以從超類繼承行為。在這個類層次體系中有一個根類,它是具有一般行為的類。
當編輯並運行一個Java程序時,需要同時涉及到這四種方面。使用文字編輯軟體(例如記事本、寫字板、UltraEdit等)或集成開發環境(Eclipse、MyEclipse等)在Java源文件中定義不同的類。
通過調用類(這些類實現了Java API)中的方法來訪問資源系統,把源文件編譯生成一種二進制中間碼,存儲在class文件中。
通過運行與操作系統平台環境相對應的Java虛擬機來運行class文件,執行編譯產生的位元組碼,調用class文件中實現的方法來滿足程序的Java API調用 。
5. java中實例化方法是什麼意思
在面向對象的編程中,通常把用類創建對象的過程稱為實例化,其格式如下:
類名 對象名 = new 類名(參數1,參數2...參數n)
(這里,「類名」這個類名實例化成了「對象名」這個對象)
如 Date date=new Date();就是用日期類創建了一個日期的對象,就叫對象的實例化。
多數語言中,實例化一個對象 其實就是在內存中開放一個空間 用於存儲新的產物,即對象。
例如一個類class A{
.....
}
A a=new A();
6. java類中定義的類怎麼 實例化
子對象可以使用父類的除了private的所有方法,父類不能使用子類的方法。
就好象,兒子知道父親乾的詳細信息(比如娶了多少老婆,賺了多少錢),但是父親不能知道他這一生會生多少兒子,兒子長大以後會娶多少老婆,會賺多少錢一樣。
a b
= new
b();
b想訪問b類的方法,可以通過強制類型轉換
((b)b).setcolor();
7. java中如何通過一個字元串來實例化一個類並調用其中方法
1、建立一個xml配置文件,將字元串和對應的類的全路徑配置到xml文件中
例:
<bean>
<serviceid="您的字元串"class="您的類全路徑(包名加類名)"/>
</bean>
2、使用xml解析技術可以得到您的字元串對應的類,方法有多中,小文件推薦使用dom4j,大文件使用sex。
3、使用反射技術獲得類的實例
例:
Objectobject=Class.forName("您的字元串對應的類全路徑").newInstance();
4、相關知識點:只要合理的用好這些知識點,就可以建立一個baseFactory類,作為項目的工廠類生產項目需要的各種類。這其實也算是抽象工廠的實現。
8. java實例化對象的方式有幾種
1、用new語句創建對象,這是最常見的創建對象的方法。
2、通過工廠方法返回對象,如:String str = String.valueOf(23);
3、運用反射手段,調用java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實例方法。如:Object obj = Class.forName("java.lang.Object").newInstance();
4、調用對象的clone()方法。
5、通過I/O流(包括反序列化),如運用反序列化手段,調用java.io.ObjectInputStream對象的 readObject()方法。
9. java中反射實例類裝載的步驟及簡要闡述
java反射和類裝載
反射機制:
Person p=new Person();
這是什麼?當然是實例化一個對象了.可是這種實例化對象的方法存在一個問題,那就是必須要知道類名才可以實例化它的對象,這樣我們在應用方面就會受到限制.那麼有沒有這樣一種方式,讓我們不知道這個類的類名就可以實例化它的對象呢?Thank Goodness!幸虧我們用的是java, java就提供了這樣的機制.
1).java程序在運行時可以獲得任何一個類的位元組碼信息,包括類的修飾符(public,static等),基類(超類,父類),實現的介面,欄位和方法等信息.
2).java程序在運行時可以根據位元組碼信息來創建該類的實例對象,改變對象的欄位內容和調用對象方法.
這樣的機制就叫反射技術.可以想像光學中的反射,就像我們照鏡子,鏡子中又出現一個自己(比喻可能不太恰當,但是足以表達清楚意思了).反射技術提供了一種通用的動態連接程序組件的方法,不必要把程序所需要的目標類硬編碼到源程序中,從而使得我們可以創建靈活的程序.
反射的實現步驟( 不問不需要答) ,
1、獲取類的常用方式有三種: a) Class.forName("包名.類名"),最常用、推薦;b) 包名.類名.class 最簡捷;c) 對象.getClass 的方式獲得。
2、對象的實例化,上面已經獲取了類,只需要調用類的實例化方法,類.newInstance()便可。
3、獲取屬性和構造等,可以參考 JavaApi 的調用,類. getDeclaredFields,類. getConstructor(..)等。
Java的反射機制是通過反射API來實現的,它允許程序在運行過程中取得任何一個已知名稱的類的內部信息.反射API位於java.lang.reflect包中.主要包括以下幾類:
1).Constructor類:用來描述一個類的構造方法
2).Field類:用來描述一個類的成員變數
3).Method類:用來描述一個類的方法.
4).Modifer類:用來描述類內各元素的修飾符
5).Array:用來對數組進行操作.
Constructor,Field,Method這三個類都是JVM(虛擬機)在程序運行時創建的,用來表示載入類中相應的成員.這三個類都實現了java.lang.reflect.Member介面,Member介面定義了獲取類成員或構造方法等信息的方法.要使用這些反射API,必須先得到要操作的對象或類的Class類的實例.通過調用Class類的newInstance方法(只能調用類的默認構造方法)可以創建類的實例.這樣有局限性,我們可以先沖類的Class實例獲取類需要的構造方法,然後在利用反射來創建類的一個實例.
類載入機制:
類的載入機制可以分為載入-鏈接-初始化三個階段,鏈接又可以分為驗證、准備、解析三個過程。
載入:通過類的載入器查找並載入二進制位元組流的過程,在堆內存中的方法區生成 一個代表這個類的 java.lang.Class 對象,作為這個類的數據請求入口。(這里可以把上面類載入器載入文件的過程描述一下(參考版本一,不作重復))。
驗證:主要是對一些詞法、語法進行規范性校驗,避免對 JVM 本身安全造成危害; 比如對文件格式,位元組碼驗證,無數據驗證等。但驗證階段是非必須的,可以通過參數 設置來進行關閉,以提高載入的時效。
准備:對類變數分配內存,並且對類變數預初始化,初始化成數據類型的原始值, 比如 static int a=11,會被初始化成成 a=0;如果是 static double a =11,則會被初始化成 a=0.0; 而成員變數只會成實例化後的堆中初始化。
解析:把常量池中的符號引用轉換為直接引用的過程。
初始化:對類的靜態變數和靜態塊中的變數進行初始化。(上面的准備階段可以作為 預初始化,初始到變數類型的原值,但如果被 final 修飾會進行真正初始化)
上面載入、鏈接、初始化的各個階段並不是彼此獨立,而是交叉進行,這點很重要 。
***class.forName和 classloader的區別
Class.forName 和 ClassLoader 都是用來裝載類的,對於類的裝載一般為分三個階段載入、鏈接、編譯,它們裝載類的方式是有區別。
首先看一下 Class.forName(..),forName(..)方法有一個重載方法 forName(className,boolean,ClassLoader),它有三個參數,第一個參數是類的包路徑,第二個參數是 boolean
類型,為 true 地表示 Loading 時會進行初始化,第三個就是指定一個載入器;當你調用class.forName(..)時,默認調用的是有三個參數的重載方法,第二個參數默認傳入 true,第三個參數默認使用的是當前類載入時用的載入器。
ClassLoader.loadClass()也有一個重載方法,從源碼中可以看出它默認調的是它的重載 方法 loadClass(name, false),當第二參數為 false 時,說明類載入時不會被鏈接。這也是兩者之間最大區別,前者在載入的時候已經初始化,後者在載入的時候還沒有鏈接。如果你需要在載入時初始化一些東西,就要用 Class.forName 了,比如我們常用的驅動載入, 實際上它的注冊動作就是在載入時的一個靜態塊中完成的。所以它不能被 ClassLoader 載入代替。
10. java當中什麼是class實例
可以這么說。在Java中,每個class都有一個相應的Class對象。也就是說,當我們編寫一個類,編譯完成後,在生成的.class文件中,就會產生一個Class對象,用於表示這個類的類型信息。
在運行期間,如果我們要產生某個類的對象,Java虛擬機會檢查該類型的Class對象是否已被載入。如果沒有被載入,JVM會根據類的名稱找到.class文件並載入它。一旦某個類型的Class對象已被載入到內存,就可以用它來產生該類型的所有對象