重载:找不到合适的函数方法(浮点数)

时间:2015-08-17 19:38:29

标签: java overloading

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,那么输出应为我是一个角色!

我错过了什么?

1 个答案:

答案 0 :(得分:2)

看一看here,它清楚地说:

  

<强>浮   4字节,IEEE 754.涵盖范围从1.40129846432481707e-45到3.40282346638528860e + 38(正或负)。

  

<强>炭   2个字节,无符号,Unicode,0到65,535

所以,基本上,你不能只将float参数传递给一个需要较小范围参数的方法。