Qual a diferença de fazer o cast assim.
Long codigo = Long.parseLong(valor);
E assim
Fornecedor fornecedor = (Fornecedor) objeto;
Qual a diferença de fazer o cast assim.
Long codigo = Long.parseLong(valor);
E assim
Fornecedor fornecedor = (Fornecedor) objeto;
Olá.
O primeiro caso não é cast
, mas sim a utilização de um método de conversão de uma string
para um valor do tipo long
, no caso. Se a string
passada no método parseLong() não for algo que possa ser convertido pro tipo long, o sistema cairá numa exception chamada NumberFormatException
. Você pode colocar isso dentro de um try/catch e utilizar um catch específico pra tratar essa exceção, ficando uma solução mais elegante.
No segundo caso, de fato é um cast
. O problema dessa forma de conversão é que ela é totalmente forçada. O cast
força a conversão do que vier depois para o tipo especificado. Isso pode trazer inúmeros problemas, pois não há garantias de que seja possível converter o valor e fica difícil de tratar casos de cast
, por esta questão inclusive que não é muito recomendável utilizar. Ou seja, utilizar cast
é ter certeza que determinado valor pode mudar de tipo e continuará funcionando normalmente, tipo quando você tem uma string "1" e faz o cast
pra inteiro, porém note que essa "certeza" é relativa.
obrigado