这个问题很难说,所以我将不得不使用一些代码示例。基本上,我有一个(重载)方法需要3个参数,最后一个我超载。和in一样,有时最后一个参数是String
,有时候是double
等等。我想用三态条件表达式作为最后一个参数来调用这个方法,所以根据某个值,它会传递一个double或者一个串。下面是一个例子...如何强制Java为某个方法调用的某个参数接受条件类型?
重载方法标题:
writeToCell(int rowIndex, int colIndex, double value)
writeToCell(int rowIndex, int colIndex, String value)
我想要做的事:
writeToCell(2, 4, myValue != null ? someDouble : someString);
然而,这会导致编译错误:
The method writeToCell(int, int, double) in the type MyType is not applicable
for the arguments (int, int, Object&Comparable<?>&Serializable)
Java似乎并不“足够聪明”(或者只是没有专门构建的功能)来实现eit她的选择有一个支持它的方法。我的问题是 - 有没有办法做到这一点?我知道我可以通过以double形式传递字符串来进行模拟(例如writeToCell(2, 4, myValue != null ? someDouble.toString() : someString);
),但该方法需要将其作为双数据类型接收。
逻辑告诉我,没有办法强制Java接受这种说法......但值得一试,因为它会为我带来更多更清晰的代码。任何人都知道如何做到这一点......?
您不能将本机类型与对象混合。把它们装箱(或者让编译器去做)。 – 2010-03-05 13:09:02