Java 无法对基元类型void调用格式(日期)

Java 无法对基元类型void调用格式(日期),java,Java,在jasper报告中,我尝试了以下内容 new SimpleDateFormat(“dd.MM.yyyy HH:MM”).setTimeZone(TimeZone.getTimeZone(“UTC”))格式(新日期(1483337940000L)) 在文本字段表达式中 但是我得到了错误 无法对基元类型void调用格式(日期) 它与java中的以下代码不一样吗 1483337940000L is 02.01.2107 07:19 SimpleDateFormat sdf = new Simple

在jasper报告中,我尝试了以下内容

new SimpleDateFormat(“dd.MM.yyyy HH:MM”).setTimeZone(TimeZone.getTimeZone(“UTC”))格式(新日期(1483337940000L))

在文本字段表达式中

但是我得到了错误

无法对基元类型void调用格式(日期)

它与java中的以下代码不一样吗

1483337940000L is 02.01.2107 07:19

SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
String test  = sdf.format(new Date(1483337940000L)); // Here I am getting 06:19

String test2 = new SimpleDateFormat("dd.MM.yyyy HH:mm").setTimeZone(TimeZone.getTimeZone("UTC")).format( new Date(1483337940000L)); // Here I am getting the error Cannot invoke format(Date) on the primitive type void
该方法来自DateFormat类;并且不返回值;因为它是无效的

当你写作的时候

sdf.setTimeZone(TimeZone.getTimeZone("UTC")).format(new Date(1483337940000L)); 
您尝试对setTimeZone()的结果调用
format()

但由于这种方法没有结果;那一定会失败

这里真正需要注意的是:不要假设一个方法在做什么。是的,一些API是通过返回调用方法的对象来允许“流畅调用”的;但不是全部!因此,当有疑问时:检查javadoc。首先。

该方法来自DateFormat类;并且不返回值;因为它是无效的

当你写作的时候

sdf.setTimeZone(TimeZone.getTimeZone("UTC")).format(new Date(1483337940000L)); 
您尝试对setTimeZone()的结果调用
format()

但由于这种方法没有结果;那一定会失败


这里真正需要注意的是:不要假设一个方法在做什么。是的,一些API是通过返回调用方法的对象来允许“流畅调用”的;但不是全部!因此,当有疑问时:检查javadoc。首先。

setTimeZone不返回值。这是一个无效的方法。只有当每个操作都定义为返回调用它的对象时,惯用语
obj.operation1().operation2().operation3()
才有效。这不是该操作的定义方式,因此不能使用“链接命令”的习惯用法;所以请考虑在某个时候接受;setTimeZone不返回值。这是一个无效的方法。只有当每个操作都定义为返回调用它的对象时,惯用语
obj.operation1().operation2().operation3()
才有效。这不是该操作的定义方式,因此不能使用“链接命令”的习惯用法;所以请考虑在某个时候接受;