警告 - 访问静态字段年份

时间:2011-01-14 17:40:12

标签: java static calendar

我正在使用Calendar来访问当前年份。

这是我的代码......

import java.util.Calendar;
Calendar c = c.getInstance();
int year = c.get(c.YEAR);

代码编译并运行正常,但它会显示一条警告消息“警告,访问静态字段”是否有问题,或者我应该做些更好的事情?

4 个答案:

答案 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( “静态存取”)