Я искал ответы здесь, и каждая найденная нить была на самом деле «фрагментом» того, что я ищу.
Я бы хотел найти лучший способ, чем этот:
~ РЕДАКТИРОВАТЬ: ОЙ! Прежде всего я хотел использовать примитивные классы Wrapper, но я думал об использовании примитивных типов при вызове метода в тот самый момент ~
Спасибо, что заметили:)
@Override
public void setValue(Object value) {
if (value instanceof String) {
} else if (value instanceof Integer) { // and not 'int'
} else if (value instanceof Long) { // and not 'long'
}
}
// The usage that made me confused in the first place :
int i = 42;
setValue(i);
Обратите внимание на аннотацию @Override: это реализация метода интерфейса. Этот метод будет принимать разные типы в зависимости от реализации, поэтому я не хочу создавать три отдельных метода, использующих разные типы параметров.
В этом примере это текстовое поле, которое принимает только цифры и ничего больше, поэтому оно может быть представлено только строкой (которая проверяется регулярным выражением ^[0-9]*$
), long и int.
Я бы также хотел - возможно, в конечном итоге - принять пользовательские (и простые) DTO, которые больше похожи на POJO, но если эта особенность усложняет все остальное, я имею в виду кое-что еще, так что не волнуйтесь тоже много об этом.
Как я уже сказал, разные реализации этого интерфейса могут принимать совершенно разные типы.
* Я, очевидно, не спрашиваю, как поменять местами целые числа, длинные и строковые значения (которые не могут быть переключены, пока нет. До тех пор, пока не появится Java7), я хочу поменять регистр instanceofs *
После просмотра
Моя реализация, очевидно, работает, но я просто чувствую, что есть лучший способ.
Мне интересно, есть ли более чистый метод, чем делать то, что я сделал, что вы предлагаете и почему?
Спасибо за ваше время.
С уважением, Доминик Бриссетт.
РЕДАКТИРОВАТЬ: использование с примитивными типами и автобоксом
public static void main(String[] args) {
int i = 42;
System.out.println(autoboxing(i));
}
public static boolean autoboxing(Object o) {
return o instanceof Integer;
}
Выводы true
, потому что, в конце концов, myInt instanceof Integer
- это правда ..!