java - 匿名类成员无法重新初始化

标签 java anonymous-class

我正在重新初始化本地类的成员变量,但收到编译错误。这里有什么问题吗?为什么这不能编译?谢谢!

这不会编译

public class TestSomething {

public void someMethod(){
    class LocalClassInner{
        int i=100; // Error on this line.Syntax error on token ";", , expected

        i=200;
    }       
}

}   

编译得很好

public class TestSomething {

public void someMethod(){
    class LocalClassInner{
        int i=100;
        //i=200;
    }       
}}

最佳答案

这并不是一个真正的本地类问题。您不能将赋值语句放在任何类的“顶层”。

赋值语句需要放在方法、构造函数、静态初始化程序或实例初始化程序中。

你写的时候

int i = 100;

您实际上是在声明内部类的一个字段(如您所知)。您可以重新分配此字段,前提是您在构造函数、方法等中这样做了。

附录

以下使用实例初始值设定项,只是为了好玩:

public void someMethod() {
    class LocalClassInner {
        int i = 100;
        {i=200;}
    }           
}

它编译得很好,请参阅 http://ideone.com/qjnv3

关于java - 匿名类成员无法重新初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11379404/

相关文章:

java - 如何将一个文本文件分成两部分?

Java write() 函数

java - Azure 移动设备作为存储

java - 解析 Node 内的 XML

java - 从匿名内部类设置外部变量

java - 从页面的无元素部分提取文本

java - 将 Collection<myClass> 转换为 Collection<String>

Scala 实现抽象基类并在匿名类中混合特征

java - 匿名类中的 Groovy 脚本字段访问

c# - 匿名类、临时数据和匿名类的集合