Java类中default修饰成员变量报错,请求原因分析
为啥这行代码会报语法错误?
先看你贴的这段代码:
public class Foundation { private int var1; default int var2; //Syntax error in tokens misplaced constructs, misplaced constructs protected int var3; public int var4; }
这个报错的根源很明确:default根本不是Java类里成员变量的合法访问修饰符!
给你梳理下Java类字段的访问修饰符规则:
- 类的成员变量只能用这四种访问控制方式:
private:只有当前类能访问protected:当前类、同包类、子类都能访问public:所有类都能访问- 无修饰符(默认权限):只有当前类和同包类能访问,也就是常说的“包级私有”——注意,这里是啥都不写,不是写
default
那default关键字在Java里到底能干嘛?
- 它是用来修饰接口里的默认方法的(Java 8之后新增的特性),让接口可以带方法实现
- 另外枚举类里的常量默认是
public static final,也不用显式写default
如果你的需求是给var2设置成默认的包级访问权限,只需要把default删掉就行,改成这样:
int var2;
这样就完全符合Java语法了,报错自然就消失啦~
内容的提问来源于stack exchange,提问作者Shivam
相关产品推荐
相关产品推荐

