Pessoal estou enviando um método que fiz, gostaria de saber se tem como generalizar uma parte dele, usei reflection e implementei uma outra classe, não sei se entendi ao certo o conceito de interface. A classe está funcionando normal, mais por agora eu gostaria de saber(começa na linha 27) se tem como eu passar o parametro de modo diferente? pois como ele eu verifico o tipo do parametro que o get recebe, int ou String, mais isso gera um problema, caso eu tenha outros tipos como double, boolean e etc, eu vou tem que ficar colocando um if para cada um deles?
Alguma luz?
Segue o código.
@Override
public List<PessoaJuridica> select(PessoaJuridica obj)
throws SQLException, IllegalArgumentException,
IllegalAccessException, InvocationTargetException,
InstantiationException {
// TODO Auto-generated method stub
// aqui vai meu select
String sql = "select * from pessoas juridicas";
connection = MsSqlConnectionFactory.getConnection();
pStatement = connection.prepareStatement(sql);
resultSet = pStatement.executeQuery();
Class<?> clazz = obj.getClass();
List<PessoaJuridica> objs = new ArrayList<PessoaJuridica>();
System.out.println("Selecionando pessoas...");
while (resultSet.next()) {
// System.out.printf("... posição %d\r", resultSet.getRow());
int i = 0;
obj = (PessoaJuridica) clazz.newInstance();
for (Method method : clazz.getDeclaredMethods()) {
if (method.getName().toString().substring(0, 3).contains("set")) {
i++;
Class<?> paramTypes[] = method.getParameterTypes();
Object o = new Object();
o = resultSet.getObject(i);
if (o != null) {
if (!o.equals("")) {
//aqui é onde eu queria generalizar.
if (paramTypes[0].toString().equals("int")) {
o = (resultSet.getInt(i));
}
if (paramTypes[0].toString().equals(
"class java.lang.String")) {
o = (resultSet.getString(i));
}
method.invoke(obj, o);
}
}
}
}
objs.add(obj);
}
System.out.println("Finalizando a iteração do resultSet...");
return objs;
}