1. 程式人生 > >關於java內部類載入順序的問題

關於java內部類載入順序的問題

前面是看到某個論壇討論的內部類載入順序的問題,連結如下:http://www.oschina.net/question/2273217_217864#tags_nav

今天看了單例模式,對內部類的載入順序產生了疑問。所以來請教大家。
我們知道,java當中,類的載入順序是:類靜態塊-類靜態屬性-類內部屬性-類構造方法。
但是當有內部類的時候會怎樣呢?我們先看一下程式碼。

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 public class Singleton { public static class Inner{ static { System.out.println("TestInner Static!"); } public final static Singleton testInstance = new Singleton(3); } public static Singleton getInstance(){ return Inner.testInstance;
} public Singleton(int i ) { System.out.println("Test " + i +" Construct! "); } //類靜態塊 static { System.out.println("Test Static"); } //類靜態屬性 public

相關推薦

關於java部類載入順序的問題

前面是看到某個論壇討論的內部類載入順序的問題,連結如下:http://www.oschina.net/question/2273217_217864#tags_nav 今天看了單例模式,對內部類的載入順序產生了疑問。所以來請教大家。 我們知道,java當中

部類載入順序及靜態部類單例模式

載入一個類時,其內部類是否同時被載入?下面我們做一個實驗來看一下。  Java程式碼   public class Outer {       static {           System.out.println("load outer class...");

Java部類載入問題探究

靜態內部類不持有外部類的引用 這個觀點是眾所周知的。雖然明白是因為其建構函式內沒有傳入外部類的引用。可是為什麼靜態類可以沒有傳入引用呢,靜態內部類的載入又是什麼樣的過程呢? 這幾天找到的答案,似乎都不能讓我有一種豁然開朗的感覺。於是一次新探索開始了~ ╭(●`∀´●)╯ 一開始,我是這樣想的

朝花夕拾——Java靜態部類載入

靜態內部類不持有外部類的引用 這個觀點是眾所周知的。雖然明白是因為其建構函式內沒有傳入外部類的引用。可是為什麼靜態類可以沒有傳入引用呢,靜態內部類的載入又是什麼樣的過程呢? 這幾天找到的答案,似乎都不能讓我有一種豁然開朗的感覺。於是一次新探索開始

Java部類引用外部類中的局部變量為何必須是final問題解析

lib soft 編譯器 art http word tail ace 軟件 今天編寫一個多線程程序,發現在方法內定義內部類時,如果內部類調用了方法中的變量,那麽該變量必須申明為final類型,百思不得其解,後來想到應該是生命周期的原因,因為方法內定義的變量是局部變量,

Java部類之匿名部類

urn nat 看到了 math 通過 rri 內部 test mat ??我們都知道Java中可以使用內部類,將一個類的定義放在另一個類的定義的內部,這就是內部類,但是匿名內部類往往使我們摸不著頭腦,因為它並沒有特定的名稱,那麽該如何使用它呢? 定義一個匿名內部類 pu

Java部類基本使用

add size sel 整體 object 方法 句柄 protected 基本使用 鏈接到外部類 ??創建內部類時,那個類的對象同時擁有封裝對象(封裝內部類的外部類)的一個鏈接,所以內部類可以訪問外部類的成員。??內部類擁有對外部類所有元素的訪問權限。??看如下代碼,內

Java部類的使用小結

提示 key 內部 效果 com where out alt 文件 轉自:http://android.blog.51cto.com/268543/384844/ 內部類是指在一個外部類的內部再定義一個類。類名不需要和文件夾相同。 *內部類可以是靜態static的,也可

JAVA 部類 (二)

匿名內部類 獨立 button strong 知識 desc ets .get xxx 一、為什麽要使用內部類 為什麽要使用內部類?在《Think in java》中有這樣一句話:使用內部類最吸引人的原因是:每個內部類都能獨立地繼承一個(接口的)實現,所以無論外

Java部類持有外部類的引用詳細分析與解決方案

調用 lai urn star keyword inner android get sta 在Java中內部類的定義與使用一般為成員內部類與匿名內部類,他們的對象都會隱式持有外部類對象的引用,影響外部類對象的回收。 GC只會回收沒有被引用或者根集不可到達的對象(取決於GC算

java 部類

所在 on() 定義變量 實現接口 特性 for sed prot ring 內部類(innerclasses) 一般情況,我們把類定義成獨立的單元。有些情況下,我們把一個類放在另一個類的內部定義,稱為內部類。 內部類的作用: 1. 內部類提供了更

Java部類

局部內部類 參數 修飾 變量 default 參數傳遞 ted ati private 部類是指在一個外部類的內部再定義一個類。類名不需要和文件夾相同。 *內部類可以是靜態static的,也可用public,default,protected和private修飾。(而外部頂

Java部類的使用小結 形參為什麽要用final

trac som 調用 匿名內部類 事情 ani 如果 method 方法 部類是指在一個外部類的內部再定義一個類。類名不需要和文件夾相同。 *內部類可以是靜態static的,也可用public,default,protected和private修飾。(而外部頂級類即類名和

java 部類和閉包

ice end trac 定義 stat 常見 tostring change wan 內部類(inner class) public class Outer{ private String name; class Inner{ publi

java 部類 嵌套類

seq hub 存在 邏輯 val blog ems 不能 pri 概述 java允許我們把一個類a定義在另一個類b裏面,那麽這個類a就叫做內部類。例如如下面: 如果內部類似Non-static的那麽被稱作內部類 class OuterClass { ... class

java部類作用

修改 private end 之一 class 需要 sta bean sid 推薦一、 定義 放在一個類的內部的類我們就叫內部類。 二、 作用 1.內部類可以很好的實現隱藏 一般的非內部類,是不允許有 private 與protected權限的,但內部類可以

Java部類(5):應用例

ont 應用 情況 test 調用 sub() spa ren tro 例1-閉包(Closure) 閉包是一個可調用的對象(通過Callback),它記錄了一些信息,這些信息來自於創建它的作用域 1 interface Incrementable { 2 v

java部類之成員部類

cte 對象 todo 定義 包括 類屬性 out pri int 內部類概念:顧名思義,就是將一個類定義在另一個個類內部。內部的類稱之為內部類 。 內部類的主要特點:1.內部類可以很好的實現隱藏,可以使用protected、private修飾符。2.內部類可以直接訪問外部

java部類之成員部類實例

out 成員內部類 出現 sys true .sh 同時 同名 一個 第一個是如何實現同時繼承兩個類 public class MultiExtendsDemo { public static void main(String[] args) { // TODO

java部類之成員部類之局部內部類

generated () 對象 靜態 pre rsh java內部類 cal pos 局部內部類特點:  1.定義在代碼塊、方法體內的類叫局部內部類  2.局部內部類訪問外部類的屬性和方法使用“外部類名.this.屬性名”和“外部類名.this.方法名(參數)”的形式  3