У меня есть метод, который я хочу, чтобы реорганизовать, и она выглядит (ну, очень упрощенно), как это:Как предотвратить стирание стилей?
import com.sun.tools.javac.util.Pair;
private int foo(Pair<String, ?>... params) {
if (params[0].snd instanceof String) {
// do something
return 0;
} else if (params[0].snd instanceof ArrayList) {
// do something else
return 1;
}
return -1; // realistically in the code base, this line will never happen **edit: disregard this line
}
так я думал, я хотел бы сделать что-то вроде разделить его на два метода, так что Мне не нужно проверять тип. (Это даже хорошо рефакторинг?)
, так что я хотел сделать что-то вроде этого:
private int foo(Pair<String, String>... params) {
// do something
return 0;
}
private int foo(Pair<String, ArrayList>... params) {
// do something else
return 1;
}
Но компилятор продолжает говорить мне, что оба foo()
методы имеют один и тот же тип стирания. Ява просто стирает все, что знает Pair<A, B>
? Если да, то какой способ лучше реорганизовать? (или нужен рефакторинг)
Я бы использовал ваш первый метод. Однако я бы заменил 'return -1;' на 'throw new IllegalArgumentsException (« message »);' – Cruncher