我有一些代碼,我有一個變量,需要一個冗長的類聲明。我想定義變量在頁面的頂部,然後定義它如下:Java變量必須在其自己的範圍內初始化?
private IFoo bar;
/* seemingly irrelevant code */
bar = new IFoo() { /* a bunch of stuff */ };
但我的Java編譯器抱怨說,這不會發生。它說在線上的}
上有語法錯誤(這真的沒有意義,因爲它在適當的位置)。
所以要安靜的編譯器,我已經把我的變量的定義放在了更多的{ }
。我忘記了這種模式被稱爲,但我知道它爲什麼存在,而不應該在我的情況下真的有必要。
{
bar = new IFoo() { /* a bunch of stuff */ };
}
總之,我想我的問題是,爲什麼我不能只是做 bar = new IFoo(){};
,而不是 { bar = new IFoo(){}; }
?
其他詳情:IFoo
是一個接口,我使用JDK 1.6與Android和Eclipse。
定義bar
立即工作就好:
private IFoo bar = new IFoo() { /* stuff */ };
您可能要考慮創建一個[SSCCE](http://sscce.org)。 – Jeffrey 2012-07-22 02:50:11
我真的花了一些時間試圖讓這個問題看起來很漂亮..... – eternalmatt 2012-07-22 03:16:06
SSCCE不是一個很好的問題,它是一個簡短的代碼示例,我們可以在我們的IDE中運行以查看您確切的問題,正如您看到的它。它可以幫助我們找出你的問題,所以我們可以更快地給你一個更好的答案 – Jeffrey 2012-07-22 03:18:49