Если ваша конечная цель - работать с базой данных, лучше НЕ использовать Object в вашей функции, как эта.Это никому не говорит, что законно проходить.Я бы предложил вместо этого использовать JDBC setObject (int parameterIndex, Object x, int targetSqlType), чтобы вызывающий абонент идентифицировал вам тип JDBC:
public void someFunction( Object obj, int targetSqlType ) {
statement.setObject( nextIndex, obj, targetSqlType );
}
как правило, плохая практика.Вы теряете важную информацию о типе, используя Object, затем поворачиваясь и жестко кодируя эту информацию о типе в лестнице if.Лучше определить несколько методов для каждого типа с одинаковыми именами.Поэтому, если у вас есть функция, которая может принимать 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 для обработки работы, сопоставляя правильный метод с типом, который ему передал вызывающий.Нет необходимости в лестнице if, и компилятор будет жаловаться пользователю, когда он не использует известный тип, в отличие от использования Object и его смерти во время выполнения.
В JDBC известные типы хорошо определенытак что вы можете легко создавать методы, которые знают, как обрабатывать каждый тип, понятный каждой базе данных JDBC.Также использование метода setObject () значительно облегчает вашу работу.