java中非静态内部类中不可声明静态成员

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,使其变为全局变量。

猜你喜欢

转载自blog.csdn.net/hellorichen/article/details/87874087