Java 静态类中的列表生成警告,其他数据类型不';T

Java 静态类中的列表生成警告,其他数据类型不';T,java,static,warnings,Java,Static,Warnings,在编写参数化JUnit测试用例时,我在构造函数中设置实例变量时遇到以下警告: 静态字段ClassA.listofstring应以静态方式访问 提供的解决方案包括: @SuppressWarnings(“静态访问”) 及 ClassA.listofstring=paramlistofstring 而不是 this.ListOfStrings=ParamListOfStrings 此警告也适用于自定义对象,但不适用于其他数据类型(或单个字符串)。为什么?其他静态数据类型也会发生这种情况 访问静态字段

在编写参数化JUnit测试用例时,我在构造函数中设置实例变量时遇到以下警告:

静态字段ClassA.listofstring应以静态方式访问

提供的解决方案包括:

@SuppressWarnings(“静态访问”)

ClassA.listofstring=paramlistofstring

而不是

this.ListOfStrings=ParamListOfStrings


此警告也适用于自定义对象,但不适用于其他数据类型(或单个
字符串
)。为什么?

其他静态数据类型也会发生这种情况

访问静态字段时,最好使用
ClassName.fieldName
而不是
myObj.fieldName


一个原因是将字段更改为非静态时出现编译错误。

这确实发生在其他静态的数据类型上

访问静态字段时,最好使用
ClassName.fieldName
而不是
myObj.fieldName

一个原因是在将字段更改为非静态时出现编译错误。

静态并不完全意味着“所有实例共享”—它意味着“与特定实例完全无关”。换句话说,您可以在不创建任何实例的情况下访问类A中的静态字段

你能行

ClassName.variable;
而不是

ClassName cn = new ClassName();
cn.variable;
静态并不意味着“所有实例共享”——它意味着“与特定实例完全无关”。换句话说,您可以在不创建任何实例的情况下访问类A中的静态字段

你能行

ClassName.variable;
而不是

ClassName cn = new ClassName();
cn.variable;

警告与静态变量的类型无关,但与您正在使用所属类的实例而不是类的名称限定静态字段访问表达式这一事实有关

该警告与静态变量的类型无关,而是与您正在使用所属类的实例而不是类的名称限定静态字段访问表达式这一事实有关

我完全忽略了我的其他数据类型没有声明为静态的事实,感谢您指出这一点!我目前有几个字段是静态的(列表,因为它们在static
getParameters()
方法中被添加数据),还有几个字段是非静态的(它们在构造函数中被初始化)。建议在此场景中使所有字段都是静态的吗?与实例相关的每个字段都必须是非静态的。如果您有一个字段希望与所有实例共享,那么可以使用static(并且可能在构造函数之前而不是在构造函数内部实例化它)。我完全忽略了我的其他数据类型没有声明为static的事实,感谢您指出这一点!我目前有几个字段是静态的(列表,因为它们在static
getParameters()
方法中被添加数据),还有几个字段是非静态的(它们在构造函数中被初始化)。建议在此场景中使所有字段都是静态的吗?与实例相关的每个字段都必须是非静态的。如果您想与所有实例共享一个字段,那么可以使用static(并且可能在构造函数之前而不是在构造函数内部实例化它)。