Class ExactConversionsSupport
For example, a conversion from int to byte for the value 10
is exact because the result, 10, is the same as the original value. In
contrast, if the int variable i stores the value 1000 then a
narrowing primitive conversion to byte will yield the result -24.
Loss of information has occurred: both the magnitude and the sign of the
result are different than those of the original value. As such, a conversion
from int to byte for the value 1000 is inexact. Finally a
widening primitive conversion from byte to int is
unconditionally exact because it will always succeed with no loss of
information about the magnitude of the numeric value.
The methods in this class provide the run-time support for the exactness
checks of testing conversions from a primitive type to primitive type. These
methods may be used, for example, by Java compiler implementations to
implement checks for instanceof and pattern matching runtime
implementations. Unconditionally exact testing conversions do not require a
corresponding action at run time and, for this reason, methods corresponding
to these exactness checks are omitted here.
The run time conversion checks examine whether loss of information would
occur if a testing conversion would be to be applied. In those cases where a
floating-point primitive type is involved, and the value of the testing
conversion is either signed zero, signed infinity or NaN, these
methods comply with the following:
- Converting a floating-point negative zero to an integer type is considered inexact.
- Converting a floating-point
NaNor infinity to an integer type is considered inexact. - Converting a floating-point
NaNor infinity or signed zero to another floating-point type is considered exact.
- Implementation Note:
- Some exactness checks describe a test which can be redirected
safely through one of the existing methods. Those are omitted too (i.e.,
bytetocharcan be redirected toisIntToCharExact(int),shorttobytecan be redirected toisIntToByteExact(int)and similarly forshorttochar,chartobyteandchartoshortto the corresponding methods that take anint). - See Java Language Specification:
-
5.7.1 Exact Testing Conversions
5.7.2 Unconditionally Exact Testing Conversions
15.20.2 The instanceof Operator - Since:
- 23
-
Method Summary
Modifier and TypeMethodDescriptionstatic booleanisDoubleToByteExact(double n) Exactness method from double to bytestatic booleanisDoubleToCharExact(double n) Exactness method from double to charstatic booleanisDoubleToFloatExact(double n) Exactness method from double to floatstatic booleanisDoubleToIntExact(double n) Exactness method from double to intstatic booleanisDoubleToLongExact(double n) Exactness method from double to longstatic booleanisDoubleToShortExact(double n) Exactness method from double to shortstatic booleanisFloatToByteExact(float n) Exactness method from float to bytestatic booleanisFloatToCharExact(float n) Exactness method from float to charstatic booleanisFloatToIntExact(float n) Exactness method from float to intstatic booleanisFloatToLongExact(float n) Exactness method from float to longstatic booleanisFloatToShortExact(float n) Exactness method from float to shortstatic booleanisIntToByteExact(int n) Exactness method from int to bytestatic booleanisIntToCharExact(int n) Exactness method from int to charstatic booleanisIntToFloatExact(int n) Exactness method from int to floatstatic booleanisIntToShortExact(int n) Exactness method from int to shortstatic booleanisLongToByteExact(long n) Exactness method from long to bytestatic booleanisLongToCharExact(long n) Exactness method from long to charstatic booleanisLongToDoubleExact(long n) Exactness method from long to doublestatic booleanisLongToFloatExact(long n) Exactness method from long to floatstatic booleanisLongToIntExact(long n) Exactness method from long to intstatic booleanisLongToShortExact(long n) Exactness method from long to short
-
Method Details
-
isIntToByteExact
public static boolean isIntToByteExact(int n) Exactness method from int to byte- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-
isIntToShortExact
public static boolean isIntToShortExact(int n) Exactness method from int to short- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-
isIntToCharExact
public static boolean isIntToCharExact(int n) Exactness method from int to char- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-
isIntToFloatExact
public static boolean isIntToFloatExact(int n) Exactness method from int to float- Implementation Requirements:
- relies on the notion of representation equivalence defined in the specification of the Double class.
- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-
isLongToByteExact
public static boolean isLongToByteExact(long n) Exactness method from long to byte- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-
isLongToShortExact
public static boolean isLongToShortExact(long n) Exactness method from long to short- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-
isLongToCharExact
public static boolean isLongToCharExact(long n) Exactness method from long to char- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-
isLongToIntExact
public static boolean isLongToIntExact(long n) Exactness method from long to int- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-
isLongToFloatExact
public static boolean isLongToFloatExact(long n) Exactness method from long to float- Implementation Requirements:
- relies on the notion of representation equivalence defined in the specification of the Double class.
- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-
isLongToDoubleExact
public static boolean isLongToDoubleExact(long n) Exactness method from long to double- Implementation Requirements:
- relies on the notion of representation equivalence defined in the specification of the Double class.
- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-
isFloatToByteExact
public static boolean isFloatToByteExact(float n) Exactness method from float to byte- Implementation Requirements:
- relies on the notion of representation equivalence defined in the specification of the Double class.
- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-
isFloatToShortExact
public static boolean isFloatToShortExact(float n) Exactness method from float to short- Implementation Requirements:
- relies on the notion of representation equivalence defined in the specification of the Double class.
- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-
isFloatToCharExact
public static boolean isFloatToCharExact(float n) Exactness method from float to char- Implementation Requirements:
- relies on the notion of representation equivalence defined in the specification of the Double class.
- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-
isFloatToIntExact
public static boolean isFloatToIntExact(float n) Exactness method from float to int- Implementation Requirements:
- relies on the notion of representation equivalence defined in the specification of the Double class.
- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-
isFloatToLongExact
public static boolean isFloatToLongExact(float n) Exactness method from float to long- Implementation Requirements:
- relies on the notion of representation equivalence defined in the specification of the Double class.
- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-
isDoubleToByteExact
public static boolean isDoubleToByteExact(double n) Exactness method from double to byte- Implementation Requirements:
- relies on the notion of representation equivalence defined in the specification of the Double class.
- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-
isDoubleToShortExact
public static boolean isDoubleToShortExact(double n) Exactness method from double to short- Implementation Requirements:
- relies on the notion of representation equivalence defined in the specification of the Double class.
- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-
isDoubleToCharExact
public static boolean isDoubleToCharExact(double n) Exactness method from double to char- Implementation Requirements:
- relies on the notion of representation equivalence defined in the specification of the Double class.
- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-
isDoubleToIntExact
public static boolean isDoubleToIntExact(double n) Exactness method from double to int- Implementation Requirements:
- relies on the notion of representation equivalence defined in the specification of the Double class.
- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-
isDoubleToLongExact
public static boolean isDoubleToLongExact(double n) Exactness method from double to long- Implementation Requirements:
- relies on the notion of representation equivalence defined in the specification of the Double class.
- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-
isDoubleToFloatExact
public static boolean isDoubleToFloatExact(double n) Exactness method from double to float- Implementation Requirements:
- relies on the notion of representation equivalence defined in the specification of the Double class.
- Parameters:
n- value- Returns:
- true if and only if the passed value can be converted exactly to the target type
-