今天筆試遇到的試題,一下子把我打得措手不及。想問下大神,這種有沒有實際運用場景的。
public class Test {
public int test() {
// 把類C定義成局部變量
class C{
public int num = 1;
}
C c = new C();
return c.num;
}
public static void main(String[] args) {
// 把類B定義成局部變量
class B {
public int n = 3;
}
Object o = (Object) new B();
B b = (B) o;
System.out.println(b.n);
System.out.println(new Test().test());
}
}
6 回答

阿晨1998
TA貢獻2037條經(jīng)驗 獲得超6個贊
在方法中有兩種方式定義類:
public void myMethod()
{
// 匿名內(nèi)部類
Runnable r = new Runnable() {
public void run() {}
};
// 局部內(nèi)部類
class LocalClass implements Runnable
{
public void run() {}
}
}
題主說的就是局部內(nèi)部類,在使用上和匿名內(nèi)部類效果上是一樣的,我想大多數(shù)人更傾向于使用匿名內(nèi)部類。它們有如下特點:
能訪問方法中的final變量
外部包括本類中的其他方法都是不可見的
實際開發(fā)中最常見的使用方式,就是實現(xiàn)Runnable了。

神不在的星期二
TA貢獻1963條經(jīng)驗 獲得超6個贊

飲歌長嘯
TA貢獻1951條經(jīng)驗 獲得超3個贊
內(nèi)部類方便私有化,安全,而且使外部代碼簡潔。
內(nèi)部類是面向對象的閉包
私有靜態(tài)內(nèi)部類, 只有當有引用時, 該類才會被裝載,就是上面說的延遲加載啦。。。
添加回答
舉報
0/150
提交
取消