Класс 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или бесконечности или знакового нуля в другой тип плавающей точки считается точным.
- Implementation Note:
- Некоторые проверки точности описывают тест, который можно безопасно перенаправить через один из существующих методов. Они тоже опущены (например,
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
- Since:
- 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/runtime/ExactConversionsSupport.html