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
NaN
or infinity to an integer type is considered inexact. - Converting a floating-point
NaN
or 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.,
byte
tochar
can be redirected toisIntToCharExact(int)
,short
tobyte
can be redirected toisIntToByteExact(int)
and similarly forshort
tochar
,char
tobyte
andchar
toshort
to 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 boolean
isDoubleToByteExact
(double n) Exactness method from double to bytestatic boolean
isDoubleToCharExact
(double n) Exactness method from double to charstatic boolean
isDoubleToFloatExact
(double n) Exactness method from double to floatstatic boolean
isDoubleToIntExact
(double n) Exactness method from double to intstatic boolean
isDoubleToLongExact
(double n) Exactness method from double to longstatic boolean
isDoubleToShortExact
(double n) Exactness method from double to shortstatic boolean
isFloatToByteExact
(float n) Exactness method from float to bytestatic boolean
isFloatToCharExact
(float n) Exactness method from float to charstatic boolean
isFloatToIntExact
(float n) Exactness method from float to intstatic boolean
isFloatToLongExact
(float n) Exactness method from float to longstatic boolean
isFloatToShortExact
(float n) Exactness method from float to shortstatic boolean
isIntToByteExact
(int n) Exactness method from int to bytestatic boolean
isIntToCharExact
(int n) Exactness method from int to charstatic boolean
isIntToFloatExact
(int n) Exactness method from int to floatstatic boolean
isIntToShortExact
(int n) Exactness method from int to shortstatic boolean
isLongToByteExact
(long n) Exactness method from long to bytestatic boolean
isLongToCharExact
(long n) Exactness method from long to charstatic boolean
isLongToDoubleExact
(long n) Exactness method from long to doublestatic boolean
isLongToFloatExact
(long n) Exactness method from long to floatstatic boolean
isLongToIntExact
(long n) Exactness method from long to intstatic boolean
isLongToShortExact
(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
-