检查风格说,对于私有类变量“必须声明为 final”。
class Test {
private int x=1;
public void set(int x) {
this.x = x;
}
}
在上述情况下,它调用将 x 声明为 final,但是将 x 声明为 final 会在构造函数中初始化它时出错。有什么问题?
检查风格说,对于私有类变量“必须声明为 final”。
class Test {
private int x=1;
public void set(int x) {
this.x = x;
}
}
在上述情况下,它调用将 x 声明为 final,但是将 x 声明为 final 会在构造函数中初始化它时出错。有什么问题?
通过 setter 进行修改private
和字段访问是一种糟糕的风格。static
您必须执行以下操作之一:
1)为它制作字段x
final
并删除set
方法。
任何一个
2)使字段x
非静态(删除static
关键字),则不需要 make 它final
。
您不能更改静态最终字段的值。
如果您真的需要 x 是静态的,请将您的方法更改为
public static void setX(int newX){
[...]
请记住,在静态方法中不能使用“this”。
这应该可以解决您的问题。
但是将 x 声明为 final 会在构造函数中初始化它时出错
要初始化静态字段,请使用static block。
而且,为什么应该是final
......原因是
private static
并且不能从外部访问。final
则无需制作static
所以,要么删除要么static
使用final private static
现在,您的另一部分代码:
public void set(int x) {
this.x = x;
}
问题:
static
不应使用 访问字段this
。