【发布时间】:2014-07-26 05:18:58
【问题描述】:
我在Item 类中有两个方法:
public void setValue(String v);
public void setValue(Double v);
我想在另一个类中使用条件运算符到setVAlue:
String str = ...
Double dbl = ...
item.setValue((condition) ? str : dbl);
但是编译器说:
cannot find symbol
symbol : method setValue(java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>>)
我认为编译器使用Double 和String 的最近的公共超类(超接口) 作为条件运算符的类型。但为什么呢?
【问题讨论】:
-
类型必须统一(例如相同)。 Java 选择调用的重载是在期间编译时选取的。