LATER EDIT:该死的, 很容易。是的,我弄乱了尺寸,并认为char比浮动大。对不起这个愚蠢的问题。
为了更好地理解Java中的原始重载,我编写了这段代码:
def deserialize() {
String json = '{"userId":null,"cost":2.3,"id":0,"dateTime":1439839235603,"amount":1.0,"mileage":123}'
Map props = new JsonSlurper().parseText(json)
new Fueling(props.collectEntries { k, v ->
[(k): k == 'dateTime' ? new DateTime(v) : v ] // convert back to DateTime
})
}
我不明白为什么会收到以下错误:class Primitive{
float fl;
Primitive(){
fl = 0/9;
}
public void info(char c){
System.out.println("I am a character!");
}
public void info(int i){
System.out.println("I am an integer!");
}
}
public class Overloading2 {
public static void main(String[] args){
Primitive pr = new Primitive();
pr.info(pr.fl);
}
}
。
引用 Thinking in Java:如果您的数据类型更小 <方法中的参数,该数据类型为已提升。
因此,如果No suitable method found for info(float)
小于float
,那么输出应为我是一个角色!
我错过了什么?
答案 0 :(得分:2)
看一看here,它清楚地说:
<强>浮强> 4字节,IEEE 754.涵盖范围从1.40129846432481707e-45到3.40282346638528860e + 38(正或负)。
和
<强>炭强> 2个字节,无符号,Unicode,0到65,535
所以,基本上,你不能只将float
参数传递给一个需要较小范围参数的方法。