Если вы конечной целью является работа с базой данных, то лучше не использовать Объект на вашей функции. Он не говорит никому, что законно передавать. Я предложил бы использовать JDBC SetObject (INT parameterIndex, Object х, внутр targetSqlType) вместо этого, и есть вызывающий идентифицировать JDBC типа к вам:
public void someFunction(Object obj, int targetSqlType) {
statement.setObject(nextIndex, obj, targetSqlType);
}
Что вы делаете с InstanceOf или GetClass(), как правило, плохая практика. Вы теряете важную информацию о типе, используя Object, а затем поворачиваетесь и жестко кодируете информацию типа в лестнице if. Лучше определить несколько методов для каждого типа, все называемые одинаковыми.Так что если у вас есть SomeFunction, который может принимать 5 различных типа параметра вы могли бы сделать следующее:
public void someFunction(Integer value) {
statement.setInt(convertThisValue(value));
}
public void someFunction(Long value) {
statement.setLong(convertThisValue(value));
}
public void someFunction(String value) {
...
}
public void someFunction(Boolean value) {
...
}
public void someFunction(Double value) {
...
}
private <T extends Number> T convertThisValue(T value) {
// do some shared logic on processing the value
}
В этом примере я показал, как можно легко определить все типы вы понимаете, как отдельные методы, отличающиеся только типом , и как вы можете централизовать некоторую логику преобразования в общей функции (convertThisValue()), чтобы вы могли совместно использовать некоторую обработку между несколькими типами. Что лучше в этом подходе, так это то, что вы используете Java-complier для обработки работы, чтобы вы соответствовали правильному методу с типом, который передал ему вызывающий. Нет необходимости в лестнице if, и компилятор будет жаловаться пользователю, если он не использует известный тип, который выступает против использования объекта, и он умирает во время выполнения.
В JDBC известные типы хорошо определены, поэтому вы можете легко создавать методы, которые знают, как обрабатывать каждый тип, понятный каждой базе данных JDBC. Также использование метода setObject() упрощает вашу работу.
Метод getClass() –