我看到一个项目的Java代码:以下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只支持数字数据类型之间的隐式类型转换,只能从小数据类型转换为大数据类型。
所以我不能解释为什么上面的代码工作。
https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html – pvg
非常感谢,@ pvg !!!所以路径很长 - >(Boxing)Long - >(is-a)Object - > format(Object object)。对? –
是的,但请记住格式是一个非常时髦的api - 您使用的特定类实际上只接受Number和Date的子类。这些在运行时由实现进行检查。 – pvg