2011-01-14 86 views
3

我正在使用Calendar访问当前年份。警告 - 访问静态字段年

这是我的代码...

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

代码编译和运行良好,但它会显示警告信息:“警告,访问静态字段”有什么问题,或者我应该做的更好的东西?

回答

4

使用Calendar.getInstance()Calendar.YEAR,静态字段不应该使用实例对象访问。

+1

这是不好的做法,因为它使得它不太明显,你正在访问一个静态字段。 – 2011-01-14 17:43:19

1

而不是做​​,这样做。 getInstance()方法是Calendar类的静态方法,这就是为什么你会收到警告。

ADD

同样为Calendar.YEAR

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”。

为了防止这些错误,您应该始终通过声明它们的类来访问静态变量,而不是使用实例。编译器警告你,因为没有理由不使用类名。