Java内部类修改外部类属性时出现语法错误求助
问题原因与解决方法
你这段代码的语法错误,是因为不能在类的顶级作用域直接写可执行赋值语句。innerClassId = ""; 是一条执行语句,必须放在方法、构造器或者初始化块这类可执行代码的容器里,不能直接丢在InnerClass的类体中。
下面是几种可行的修正方式:
方式一:在内部类构造器中赋值
把赋值语句放到内部类的构造方法里,每次创建内部类实例时会执行赋值:
public class OuterClass { public static String innerClassId = ""; public class InnerClass { public InnerClass() { // 因为innerClassId是外部类的静态属性,直接访问即可 innerClassId = "new value"; } } }
方式二:用初始化块赋值
如果希望内部类实例化时自动执行赋值,可以用非静态初始化块:
public class OuterClass { public static String innerClassId = ""; public class InnerClass { // 非静态初始化块,创建内部类实例时执行 { innerClassId = "init block value"; } } }
方式三:在方法中赋值
如果需要手动触发赋值动作,可以写一个方法:
public class OuterClass { public static String innerClassId = ""; public class InnerClass { public void updateId() { innerClassId = "method updated value"; } } }
之后创建InnerClass实例,调用updateId()方法就能完成赋值。
内容的提问来源于stack exchange,提问作者TheElementGuy
相关产品推荐
相关产品推荐

