我是java的新手。任何人都可以解释为什么以下程序不起作用?感谢。
class AnonymousInnerClassInMethod
{
public static void main(String[] args)
{
int local = 1;
Comparable compare = new Comparable ()
{
public int compareTo(Object value)
{
return (Integer)value - local;
}
};
System.out.println(compare.compareTo(5));
}
}
答案 0 :(得分:0)
您必须将local
声明为final
:
final int local = 1;
(有关this question的此事的更多信息,如 sp00m 所示。)
或者将其定义为班级的static
字段:
class AnonymousInnerClassInMethod {
private static int local = 1;
…
}
答案 1 :(得分:0)
第一个问题:您不能在嵌套类中声明public static void main(String[] args)
,除非您将该类标记为static
。
第二个问题:用于定义比较的compareTo
方法的匿名构造函数无法访问非最终变量local
。这是一个错误,因为变量可能在构造对象期间/之后发生变化。因此,如果将其标记为final,则确保变量无法更改。