Estava usando esse método para converter meu Object em Integer mas deu erro de formato.
public static Integer validarRetornoInteger(Object object) {
if (object != null) {
return (Integer) object;
}
return null;
}
A solução por enquanto foi iniciar um novo Integer com a String do Object.
public static Integer validarRetornoInteger(Object object) {
if (object != null && object.hashCode() != 0) {
Integer objectInteger = new Integer(object.toString());
return objectInteger;
}
return null;
}
Alguém sabe como posso fazer cast nesse caso?
Acho que você pode estar fazendo confusao entre cast e conversao. Cast
é quando seu Object
já é um Integer, você sabe disso, mas precisa contar pro compilador pois ele nao sabe. Daí você usa aquela primeira sintaxe:
Object souInteger = 2;
Integer jaSabia = (Integer) souInteger;
Conversao é quando seu objeto pode ser convertido para um Integer, daí você pode usar a sintaxe abaixo:
Object possoVirarInteger = "2";
Integer vireiInteger = Integer.valueOf((String) possoVirarInteger);
Repare que o método valueOf precisa de uma string que possa ser convertida em integer.
Por isso estou fazendo um cast para string.
Outra coisa, geralmente nao é uma boa idéia retornar null na suas funçoes.
É muito fácil alguém esquecer de verificar e causar nullpointer na sua aplicaçao.
Quando der errado você pode tentar alternativas como: retonar um valor default que vc passa num segundo parâmetro, lançar uma exceçao, retornar um Optional.
Entendi, eu tava usando cast errado, o que vem é String mesmo.
Vou usar com o valueOf então, obrigado. Quanto ao return null, tava usando por causa da persistência no banco, quando objeto tiver zerado eu não salvo nada. Porém, como é um método global na minha aplicação, reamente pode atrapalhar.
Se vc quer ter certeza de que vc pode fazer esta conversão via cast, utilize o metodo isAssignableFrom
https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#isAssignableFrom(java.lang.Class)
agora se vc quiser converter pra string e entao tentar parsear como algum tipo numerico, saiba q isso pode não funcionar. Nesse caso vc tem que definir o comportamento, talvez lançando uma exception.