根据this answer,int常量会隐式转换为短型。为什么Short.valueOf(n)需要铸造
但在我的单元测试中,我想测试一个getValue()函数,它返回一个短。
assertEquals(obj.getValue(), 42);
显然,上述不工作,所以我尝试使用Short.valueOf
assertEquals(obj.getValue(), Short.valueOf(42));
但是,这仍然抱怨 - 尽管上述隐式转换 - 所以我必须要投的文字。
assertEquals(obj.getValue(), Short.valueOf((short)42));
Short.valueOf((short)5)似乎有点凌乱!有更清洁的方法吗? (新短( “42”)同样恐怖!)
它需要一个强制转换,因为**字符整数**值被视为“int”,所以您需要告诉编译器它实际上是一个“short”。 – 2014-10-08 10:19:20
与此相关:http://stackoverflow.com/questions/317816/why-are-there-no-byte-or-short-literals-in-java – PeterMmm 2014-10-08 10:19:57
看看JLS中的Integer Literals:http:/ /docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.1 – 2014-10-08 10:21:24