检查风格说,对于私有类变量“必须声明为 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。