package com.aaa;
/**
* @filename Test0128.java
* @author l
* @version 创建时间:2019年1月28日 下午4:47:58
* @description
*/
public class Test0128 {
class Apple {
private static long a;
private final long b = a++;
public long geta(){ return b;}
}
public static void main(String[] args) {
}
}
报错,提示:The field a cannot be declared static in a non-static inner type, unless initialized with a constant
java规定:非静态内部类中不可声明静态成员。
原因:
每一个非静态内部类必须维持对一个外部类实例的应用,表明其作用域为实例级别;
static指定的属性、方法等为类级别;
二者作用域不同,自然编译无法通过。可在变量前添加final,使其变为全局变量。
本文深入探讨了Java编程中非静态内部类使用静态成员时出现的编译错误,解释了错误产生的原因,并提供了解决方案。文章指出,非静态内部类与静态成员的作用域冲突导致了这一问题,通过将变量声明为final,可以使其成为全局变量,从而解决编译错误。
601

被折叠的 条评论
为什么被折叠?



