【发布时间】:2016-12-17 09:19:20
【问题描述】:
我在一个项目中看到了以下 Java 代码:
SimpleDateFormat dtFormater = new SimpleDateFormat("EEE, MMM dd");
long dt = weatherDataPerDay.getLong(JSON_KEY_DATETIME);
String result = dtFormater.format(dt * 1000).toString();
首先,上面的代码有效。我检查了 SimpleDateFormat 及其所有前辈的定义,但没有找到像format(long time) 这样的方法。
我只有 2 个接受 1 个参数的方法。他们是
format(Object object)-
format(Date date)。
据我所知,Java只支持数值数据类型之间的隐式类型转换,并且只支持从小数据类型到大数据类型。
所以我无法解释为什么上面的代码有效。
【问题讨论】:
-
非常感谢,@pvg!!!所以路径很长 -->(Boxing) Long -->(is-a) Object --> format(Object object)。对吗?
-
是的,但请记住 format 是一个非常时髦的 api - 您使用的特定类实际上只接受 Number 和 Date 的子类。这些由实现在运行时检查。
-
@pvg 明白了!再次感谢!