这个问题很难说,所以我将不得不使用一些代码示例。基本上,我有一个(重载)方法,它需要 3 个参数,我重载了最后一个参数。如,有时最后一个参数是 a String
,有时是 adouble
等。我想使用三元条件表达式作为最后一个参数来调用此方法,以便根据某个值,它将传递一个双精度或字符串。这是一个例子......
重载的方法头:
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 还不够“聪明”(或者只是没有故意内置的功能)来实现任何一个选项都有支持它的方法。我的问题是 - 有没有办法做到这一点?我知道我可以通过将双精度作为字符串(例如writeToCell(2, 4, myValue != null ? someDouble.toString() : someString);
)传递来模拟它,但是该方法需要将其作为双精度数据类型接收。
逻辑告诉我,没有办法强制 Java 接受这个声明......但值得一试,因为它会为我带来更清晰的代码。任何人都知道这样做的方法...?