我正在使用Calendar
来访问当前年份。
这是我的代码......
import java.util.Calendar;
Calendar c = c.getInstance();
int year = c.get(c.YEAR);
代码编译并运行正常,但它会显示一条警告消息“警告,访问静态字段”是否有问题,或者我应该做些更好的事情?
答案 0 :(得分:4)
使用Calendar.getInstance()
和Calendar.YEAR
,不应使用实例对象访问静态字段。
答案 1 :(得分:1)
执行此Calendar c = c.getInstance();
而不是Calendar c = Calendar.getInstance();
。
getInstance()
方法是Calendar
类的静态方法,这就是您收到警告的原因。
添加强>
Calendar.YEAR
答案 2 :(得分:1)
它警告您,因为使用编译时类型访问静态字段而不是对象的运行时类型,这可能导致很难找到错误。
示例:
public class AAA{
public static String HELLO = "HI";
}
public class BBB extends AAA{
public static String HELLO = "Hello World";
}
AAA test = new BBB();
System.out.println(test.HELLO); //Will print String from AAA
//instead of "Hello World"
如果没有static
,它将打印“Hello World”。
要防止这些错误,您应该始终通过声明它们的类来访问静态变量,而不是使用实例。编译器警告你,因为没有充分的理由不使用类名。
答案 3 :(得分:0)
当然建议您更改代码。但是,如果您只想避免更改,请使用方法注释: @SuppressWarnings( “静态存取”)