在Java中从静态成员调用非静态方法
这个问题相当复杂,我不知道以前是否有人问过,因为我不知道如何在搜索框中表达这个问题
以下是代码:
public class SomeClass
{
private static final DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
public static String toUTCDateString(Date date)
{
df.setTimeZone(java.util.TimeZone.getTimeZone("UTC"));
return df.format(date);
}
/* more static methods */
}
静态成员df
将在更静态的方法中再次使用,但我需要先将其时区设置为“UTC”。有没有办法一劳永逸地调用.setTimeZone("UTC")
?或者我必须在每个静态方法中调用.setTimeZone("UTC")
# 1 楼答案
不幸的是!SimpleDataFormat不是trread安全的:它保持内部状态,并在发生大破坏的同时使用
这“解决”了您的问题,因为您必须更改API
在使用其他更好的类的Java8中,这个问题得到了解决
顺便说一下,yyyy-MM-dd是ISO标准