Класс ExactConversionsSupport
public final class ExactConversionsSupport extends Object
Например, преобразование из int в byte для значения 10 является точным, поскольку результат, 10, совпадает с исходным значением. Напротив, если переменная int i хранит значение 1000, то сужающее преобразование примитивного типа в byte даст результат -24. Произошла потеря информации: и величина, и знак результата отличаются от исходного значения. Таким образом, преобразование из int в byte для значения 1000 является неточным. Наконец, расширяющее преобразование примитивного типа из byte в int является безусловно точным, поскольку оно всегда выполняется без потери информации о величине числового значения.
Методы этого класса обеспечивают поддержку во время выполнения проверок точности проверочных преобразований из одного примитивного типа в другой. Эти методы могут использоваться, например, реализациями компиляторов Java для реализации проверок instanceof и реализациями сопоставления с образцом во время выполнения. Для безусловно точных проверочных преобразований не требуется соответствующее действие во время выполнения, поэтому здесь отсутствуют методы, соответствующие этим проверкам точности.
Проверки преобразования во время выполнения выясняют, произойдет ли потеря информации при выполнении проверочного преобразования. Если задействован примитивный тип с плавающей точкой, а результат проверочного преобразования является знаковым нулем, знаковой бесконечностью или NaN, эти методы соблюдают следующие правила:
- Преобразование отрицательного нуля с плавающей точкой в целочисленный тип считается неточным.
- Преобразование
NaNили бесконечности с плавающей точкой в целочисленный тип считается неточным. - Преобразование
NaN, бесконечности или знакового нуля с плавающей точкой в другой тип с плавающей точкой считается точным.
- Примечание по реализации:
- Некоторые проверки точности описывают тест, который можно безопасно перенаправить к одному из существующих методов. Такие проверки также здесь отсутствуют (т. е.
byteвcharможно перенаправить кisIntToCharExact(int),shortвbyteможно перенаправить кisIntToByteExact(int); аналогичноshortвchar,charвbyteиcharвshortможно перенаправить к соответствующим методам, принимающимint). - См. Спецификацию языка Java:
- 5.7.1 Точные проверочные преобразования
5.7.2 Безусловно точные проверочные преобразования
15.20.2 Оператор instanceof
- Начиная с:
- 23
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static boolean |
isDoubleToByteExact |
Метод проверки точности преобразования из double в byte |
static boolean |
isDoubleToCharExact |
Метод проверки точности преобразования из double в char |
static boolean |
isDoubleToFloatExact |
Метод проверки точности преобразования из double в float |
static boolean |
isDoubleToIntExact |
Метод проверки точности преобразования из double в int |
static boolean |
isDoubleToLongExact |
Метод проверки точности преобразования из double в long |
static boolean |
isDoubleToShortExact |
Метод проверки точности преобразования из double в short |
static boolean |
isFloatToByteExact |
Метод проверки точности преобразования из float в byte |
static boolean |
isFloatToCharExact |
Метод проверки точности преобразования из float в char |
static boolean |
isFloatToIntExact |
Метод проверки точности преобразования из float в int |
static boolean |
isFloatToLongExact |
Метод проверки точности преобразования из float в long |
static boolean |
isFloatToShortExact |
Метод проверки точности преобразования из float в short |
static boolean |
isIntToByteExact |
Метод проверки точности преобразования из int в byte |
static boolean |
isIntToCharExact |
Метод проверки точности преобразования из int в char |
static boolean |
isIntToFloatExact |
Метод проверки точности преобразования из int в float |
static boolean |
isIntToShortExact |
Метод проверки точности преобразования из int в short |
static boolean |
isLongToByteExact |
Метод проверки точности преобразования из long в byte |
static boolean |
isLongToCharExact |
Метод проверки точности преобразования из long в char |
static boolean |
isLongToDoubleExact |
Метод проверки точности преобразования из long в double |
static boolean |
isLongToFloatExact |
Метод проверки точности преобразования из long в float |
static boolean |
isLongToIntExact |
Метод проверки точности преобразования из long в int |
static boolean |
isLongToShortExact |
Метод проверки точности преобразования из long в short |
Подробное описание методов
isIntToByteExact
public static boolean isIntToByteExact(int n)
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
isIntToShortExact
public static boolean isIntToShortExact(int n)
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
isIntToCharExact
public static boolean isIntToCharExact(int n)
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
isIntToFloatExact
public static boolean isIntToFloatExact(int n)
- Требования к реализации:
- опирается на понятие эквивалентности представлений, определенное в спецификации класса Double.
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
isLongToByteExact
public static boolean isLongToByteExact(long n)
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
isLongToShortExact
public static boolean isLongToShortExact(long n)
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
isLongToCharExact
public static boolean isLongToCharExact(long n)
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
isLongToIntExact
public static boolean isLongToIntExact(long n)
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
isLongToFloatExact
public static boolean isLongToFloatExact(long n)
- Требования к реализации:
- опирается на понятие эквивалентности представлений, определенное в спецификации класса Double.
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
isLongToDoubleExact
public static boolean isLongToDoubleExact(long n)
- Требования к реализации:
- опирается на понятие эквивалентности представлений, определенное в спецификации класса Double.
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
isFloatToByteExact
public static boolean isFloatToByteExact(float n)
- Требования к реализации:
- опирается на понятие эквивалентности представлений, определенное в спецификации класса Double.
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
isFloatToShortExact
public static boolean isFloatToShortExact(float n)
- Требования к реализации:
- опирается на понятие эквивалентности представлений, определенное в спецификации класса Double.
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
isFloatToCharExact
public static boolean isFloatToCharExact(float n)
- Требования к реализации:
- опирается на понятие эквивалентности представлений, определенное в спецификации класса Double.
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
isFloatToIntExact
public static boolean isFloatToIntExact(float n)
- Требования к реализации:
- опирается на понятие эквивалентности представлений, определенное в спецификации класса Double.
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
isFloatToLongExact
public static boolean isFloatToLongExact(float n)
- Требования к реализации:
- опирается на понятие эквивалентности представлений, определенное в спецификации класса Double.
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
isDoubleToByteExact
public static boolean isDoubleToByteExact(double n)
- Требования к реализации:
- опирается на понятие эквивалентности представлений, определенное в спецификации класса Double.
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
isDoubleToShortExact
public static boolean isDoubleToShortExact(double n)
- Требования к реализации:
- опирается на понятие эквивалентности представлений, определенное в спецификации класса Double.
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
isDoubleToCharExact
public static boolean isDoubleToCharExact(double n)
- Требования к реализации:
- опирается на понятие эквивалентности представлений, определенное в спецификации класса Double.
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
isDoubleToIntExact
public static boolean isDoubleToIntExact(double n)
- Требования к реализации:
- опирается на понятие эквивалентности представлений, определенное в спецификации класса Double.
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
isDoubleToLongExact
public static boolean isDoubleToLongExact(double n)
- Требования к реализации:
- опирается на понятие эквивалентности представлений, определенное в спецификации класса Double.
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
isDoubleToFloatExact
public static boolean isDoubleToFloatExact(double n)
- Требования к реализации:
- опирается на понятие эквивалентности представлений, определенное в спецификации класса Double.
- Параметры:
-
n— значение - Возвращает:
- true тогда и только тогда, когда переданное значение можно точно преобразовать в целевой тип
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/runtime/ExactConversionsSupport.html