Этот вопрос сложно сформулировать, поэтому мне придется использовать несколько примеров кода. По сути, у меня есть (перегруженный) метод, который принимает 3 параметра, последний из которых я перегрузил. Например, иногда последний параметр - String
, иногда - double
и т. Д. Я хочу вызвать этот метод, используя троичное условное выражение в качестве последнего параметра, чтобы в зависимости от определенного значения он передавал либо двойной или Строка. Вот пример ...
перегруженные заголовки метода:
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 не «достаточно умна» (или просто не имеет встроенной функциональности), чтобы понять, что у любого из вариантов есть метод, который его поддерживает. У меня вопрос - есть ли способ сделать это? Я знаю, что могу имитировать его, передавая значение типа double в виде строки (например, writeToCell(2, 4, myValue != null ? someDouble.toString() : someString);
), но метод должен получить его как тип данных double.
Логика говорит мне, что нет никакого способа заставить Java принять это утверждение ... Но стоит попробовать, так как это приведет к гораздо более ясному коду для меня. Кто-нибудь знает способ сделать это ...?