關於內部類的初始化趣事

2022-07-12 04:39:09 字數 554 閱讀 7890

今天在寫**時,碰到再內部類初始化過程中呼叫外部類變數的情況,**如下:

class testnode

}node nil, head;

public testnode()

public void printinfo()

}

在這段**中,內部類node在建構函式中呼叫了外部類testnode的node變數nil,預先是想nil的next值會被賦值為nil本身,但是執行printinfo()時得到了下面的結果:

public class testmain 

}

nil is : testnode$node@232204a1

nil.next is : null

head is : testnode$node@4aa298b7

head.next is : testnode$node@232204a1

可以看到,nil是在構造函式呼叫之後才得到新node的位址,所以以後出現這種迴圈賦值的時候要特別注意。

內部類初始化

單例模式中常用的一種餓漢模式實現是用內部類實現的,但是並不理解為什麼是餓漢,不是懶漢呢,於是寫了下面的測試程式,得到結果 並不是innerclass外部類初始化,其內部類jobschedulerholder就初始化。public class innerclass private innerclass...

匿名內部類的初始化

package codelib.innerclasses public inte ce destination package codelib.innerclasses author administrator public class innerclassinittest public strin...

內部類建立和初始化

package com.rl.innerclass public class outerclass public void setpassword string password public int geta public void seta int a public string getage ...