我有一些代码,我有一个变量,需要一个冗长的类声明。我想定义变量在页面的顶部,然后定义它如下: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