Conversão segura de Long para Int em Java (atualizado para Java 8)
Em Java, a conversão de um longo para um int pode potencialmente resultar na perda de dados. Para resolver essa preocupação, uma abordagem segura e idiomática é essencial.
Método Math.toIntExact() do Java 8
Antes do Java 8, o método recomendado para lançar com segurança um longo para um int era verificar o resultado em busca de perda potencial de informações. Isso envolveu a comparação do resultado da conversão com o valor longo original:
public static int safeLongToInt(long l) {
int i = (int) l;
if ((long) i != l) {
throw new IllegalArgumentException(l " cannot be cast to int without changing its value.");
}
return i;
}
No entanto, em Java 8 e superior, &&&]
import static java.lang.Math.toIntExact;
long foo = 10L;
int bar = toIntExact(foo);
Métodos adicionais seguros contra overflow no Java 8
Além de toIntExact(), o Java 8 introduziu vários outros métodos seguros contra overflow que terminam com "exato". Esses métodos realizam operações como adição, subtração, negação e decrementação enquanto verificam possíveis overflows:Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3