"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso converter com segurança um Long para um Int em Java 8 e além?

Como posso converter com segurança um Long para um Int em Java 8 e além?

Publicado em 15/11/2024
Navegar:925

How Can I Safely Cast a Long to an Int in Java 8 and Beyond?

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:

    Math.incrementExact(long)
  • Math.subtractExact(long, long)
  • Math.decrementExact(long)
  • Math.negateExact(long)
  • Math.subtractExact(int, int)
Utilizando Math.toIntExact () e esses métodos adicionais seguros contra overflow, você pode converter com segurança valores longos para int e realizar operações aritméticas sem o risco de perder informações.

Tutorial mais recente Mais>

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