Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java TimeZone.getDefault()属性值必须为常量错误_Java_Json_Spring_Timezone - Fatal编程技术网

Java TimeZone.getDefault()属性值必须为常量错误

Java TimeZone.getDefault()属性值必须为常量错误,java,json,spring,timezone,Java,Json,Spring,Timezone,我正在尝试将时区设置为系统默认值 我在BatchDateUtils.java类中有一个String变量: public static final String DEFAULT_TIMEZONE = TimeZone.getDefault().toString(); 我努力实现的目标是: @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = BatchD

我正在尝试将时区设置为系统默认值

我在
BatchDateUtils.java
类中有一个
String
变量:

public static final String DEFAULT_TIMEZONE = TimeZone.getDefault().toString();
我努力实现的目标是:

 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = BatchDateUtils.DEFAULT_TIMEZONE)
private Date reportDateFrom;
我得到:

Attribute value must be constant

一般来说,我知道错误是什么,但我如何解决它呢?谢谢

如果要在注释中设置值,必须定义一个常量值,例如
“Europe/London”

依赖于JVM配置的东西不是常数;但更一般地说,任何使用方法结果的东西都不是常数


此外,依赖默认时区很少是一个好主意,因为它可以在运行时更改,很容易被错误配置等。

如果要在注释中设置值,必须定义一个常量值,例如
“Europe/London”

依赖于JVM配置的东西不是常数;但更一般地说,任何使用方法结果的东西都不是常数


此外,依赖默认时区很少是一个好主意,因为它可以在运行时更改,很容易被错误配置等等。

@AndyTurner这正是我现在要避免的。我不想硬编码时区。还有其他可能性吗?是的,手动定义转换,而不是使用必须是完全常量的注释(比如仍然会有注释,但引用一个类来执行转换,该类将由您创建,并确定运行时要应用的时区)@kumesana您能给我一些详细信息吗,我真的不明白,我建议您不要使用
时区
和其他旧的数据和时间类。那门课设计得很糟糕,而且早已过时。而是使用ZoneId.systmDefault().toString()和来自的其他功能。正如安迪·特纳(Andy Turner)在回答中所说,依赖默认时区是脆弱的,因为它可能不是恒定的。@Andy Turner这正是我现在正在避免的。我不想硬编码时区。还有其他可能性吗?是的,手动定义转换,而不是使用必须是完全常量的注释(比如仍然会有注释,但引用一个类来执行转换,该类将由您创建,并确定运行时要应用的时区)@kumesana您能给我一些详细信息吗,我真的不明白,我建议您不要使用
时区
和其他旧的数据和时间类。那门课设计得很糟糕,而且早已过时。而是使用ZoneId.systmDefault().toString()和来自的其他功能。正如安迪·特纳在回答中所说,依赖默认时区是脆弱的,因为它可能不是恒定的。