com.espertech.esper.util
Class JavaClassHelper

java.lang.Object
  extended by com.espertech.esper.util.JavaClassHelper

public class JavaClassHelper
extends Object

Helper for questions about Java classes such as

what is the boxed type for a primitive type

is this a numeric type.


Constructor Summary
JavaClassHelper()
           
 
Method Summary
static boolean canCoerce(Class numberClassToBeCoerced, Class numberClassToCoerceTo)
          Determines if a number can be coerced upwards to another number class without loss.
static Number coerceBoxed(Number numToCoerce, Class resultBoxedType)
          Coerce the given number to the given type, assuming the type is a Boxed type.
static Class getArithmaticCoercionType(Class typeOne, Class typeTwo)
          Returns the coercion type for the 2 numeric types for use in arithmatic.
static String getBoxedClassName(String className)
          Returns for the class name given the class name of the boxed (wrapped) type if the class name is one of the Java primitive types.
static Class getBoxedType(Class clazz)
          Returns the boxed class for the given class, or the class itself if already boxed or not a primitive type.
static Class getClassForName(String className)
          Returns the class given a fully-qualified class name.
static Class getClassForSimpleName(String className)
          Returns the boxed class for the given classname, recognizing all primitive and abbreviations, uppercase and lowercase.
static Class getCommonCoercionType(Class[] types)
          Determines a common denominator type to which one or more types can be casted or coerced.
static Class getCompareToCoercionType(Class typeOne, Class typeTwo)
          Returns for 2 classes to be compared via relational operator the Class type of common comparison.
static String getParameterAsString(Class param)
          Returns a parameter as a string text, allowing null values to represent a null select expression type.
static String getParameterAsString(Class[] parameters)
          Returns a comma-separated parameter type list in readable form, considering arrays and null-type parameters.
static Class getPrimitiveClassForName(String typeName)
          Returns the class for a Java primitive type name, ignoring case, and considering String as a primitive.
static Class getPrimitiveType(Class clazz)
          Returns the un-boxed class for the given class, or the class itself if already un-boxed or not a primitive type.
static boolean isAssignmentCompatible(Class invocationType, Class declarationType)
          Returns true if 2 classes are assignment compatible.
static boolean isBoolean(Class clazz)
          Determines if the class passed in is a boolean boxed or unboxed type.
static boolean isFloatingPointClass(Class clazz)
          Returns true if the supplied type is a floating point number.
static boolean isFloatingPointNumber(Number number)
          Returns true if the Number instance is a floating point number.
static boolean isImplementsInterface(Class clazz, Class interfaceClass)
          Method to check if a given class, and its superclasses and interfaces (deep), implement a given interface.
static boolean isJavaBuiltinDataType(Class clazz)
          Returns true if the class passed in is a Java built-in data type (primitive or wrapper) including String.
static boolean isNumeric(Class clazz)
          Determines if the class passed in is one of the numeric classes.
static boolean isNumericNonFP(Class clazz)
          Determines if the class passed in is one of the numeric classes and not a floating point.
static Object parse(Class clazz, String text)
          Parse the String using the given Java built-in class for parsing.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JavaClassHelper

public JavaClassHelper()
Method Detail

getBoxedType

public static Class getBoxedType(Class clazz)
Returns the boxed class for the given class, or the class itself if already boxed or not a primitive type. For primitive unboxed types returns the boxed types, e.g. returns java.lang.Integer for passing int.class. For any other class, returns the class passed.

Parameters:
clazz - is the class to return the boxed class for
Returns:
boxed variant of the same class

getParameterAsString

public static String getParameterAsString(Class[] parameters)
Returns a comma-separated parameter type list in readable form, considering arrays and null-type parameters.

Parameters:
parameters - is the parameter types to render
Returns:
rendered list of parameters

getParameterAsString

public static String getParameterAsString(Class param)
Returns a parameter as a string text, allowing null values to represent a null select expression type.

Parameters:
param - is the parameter type
Returns:
string representation of parameter

getPrimitiveType

public static Class getPrimitiveType(Class clazz)
Returns the un-boxed class for the given class, or the class itself if already un-boxed or not a primitive type. For primitive boxed types returns the unboxed primitive type, e.g. returns int.class for passing Integer.class. For any other class, returns the class passed.

Parameters:
clazz - is the class to return the unboxed (or primitive) class for
Returns:
primitive variant of the same class

isNumeric

public static boolean isNumeric(Class clazz)
Determines if the class passed in is one of the numeric classes.

Parameters:
clazz - to check
Returns:
true if numeric, false if not

isNumericNonFP

public static boolean isNumericNonFP(Class clazz)
Determines if the class passed in is one of the numeric classes and not a floating point.

Parameters:
clazz - to check
Returns:
true if numeric and not a floating point, false if not

isAssignmentCompatible

public static boolean isAssignmentCompatible(Class invocationType,
                                             Class declarationType)
Returns true if 2 classes are assignment compatible.

Parameters:
invocationType - type to assign from
declarationType - type to assign to
Returns:
true if assignment compatible, false if not

isBoolean

public static boolean isBoolean(Class clazz)
Determines if the class passed in is a boolean boxed or unboxed type.

Parameters:
clazz - to check
Returns:
true if boolean, false if not

getArithmaticCoercionType

public static Class getArithmaticCoercionType(Class typeOne,
                                              Class typeTwo)
                                       throws CoercionException
Returns the coercion type for the 2 numeric types for use in arithmatic. Note: byte and short types always result in integer.

Parameters:
typeOne - is the first type
typeTwo - is the second type
Returns:
coerced type
Throws:
CoercionException - if types don't allow coercion

coerceBoxed

public static Number coerceBoxed(Number numToCoerce,
                                 Class resultBoxedType)
Coerce the given number to the given type, assuming the type is a Boxed type. Allows coerce to lower resultion number. Does't coerce to primitive types.

Parameters:
numToCoerce - is the number to coerce to the given type
resultBoxedType - is the boxed result type to return
Returns:
the numToCoerce as a value in the given result type

isFloatingPointNumber

public static boolean isFloatingPointNumber(Number number)
Returns true if the Number instance is a floating point number.

Parameters:
number - to check
Returns:
true if number is Float or Double type

isFloatingPointClass

public static boolean isFloatingPointClass(Class clazz)
Returns true if the supplied type is a floating point number.

Parameters:
clazz - to check
Returns:
true if primitive or boxed float or double

getCompareToCoercionType

public static Class getCompareToCoercionType(Class typeOne,
                                             Class typeTwo)
Returns for 2 classes to be compared via relational operator the Class type of common comparison. The output is always Long.class, Double.class, String.class or Boolean.class depending on whether the passed types are numeric and floating-point. Accepts primitive as well as boxed types.

Parameters:
typeOne - is the first type
typeTwo - is the second type
Returns:
One of Long.class, Double.class or String.class
Throws:
IllegalArgumentException - if the types cannot be compared

canCoerce

public static boolean canCoerce(Class numberClassToBeCoerced,
                                Class numberClassToCoerceTo)
Determines if a number can be coerced upwards to another number class without loss.

Clients must pass in two classes that are numeric types.

Any number class can be coerced to double, while only double cannot be coerced to float. Any non-floating point number can be coerced to long. Integer can be coerced to Byte and Short even though loss is possible, for convenience.

Parameters:
numberClassToBeCoerced - the number class to be coerced
numberClassToCoerceTo - the number class to coerce to
Returns:
true if numbers can be coerced without loss, false if not

getBoxedClassName

public static String getBoxedClassName(String className)
Returns for the class name given the class name of the boxed (wrapped) type if the class name is one of the Java primitive types.

Parameters:
className - is a class name, a Java primitive type or other class
Returns:
boxed class name if Java primitive type, or just same class name passed in if not a primitive type

isJavaBuiltinDataType

public static boolean isJavaBuiltinDataType(Class clazz)
Returns true if the class passed in is a Java built-in data type (primitive or wrapper) including String.

Parameters:
clazz - to check
Returns:
true if built-in data type, or false if not

getCommonCoercionType

public static Class getCommonCoercionType(Class[] types)
                                   throws CoercionException
Determines a common denominator type to which one or more types can be casted or coerced. For use in determining the result type in certain expressions (coalesce, case).

Null values are allowed as part of the input and indicate a 'null' constant value in an expression tree. Such as value doesn't have any type and can be ignored in determining a result type.

For numeric types, determines a coercion type that all types can be converted to via the method getArithmaticCoercionType.

Indicates that there is no common denominator type by throwing CoercionException.

Parameters:
types - is an array of one or more types, which can be Java built-in (primitive or wrapper) or user types
Returns:
common denominator type if any can be found, for use in comparison
Throws:
CoercionException - when no coercion type could be determined

getClassForName

public static Class getClassForName(String className)
                             throws ClassNotFoundException
Returns the class given a fully-qualified class name.

Parameters:
className - is the fully-qualified class name, java primitive types included.
Returns:
class for name
Throws:
ClassNotFoundException - if the class cannot be found

getClassForSimpleName

public static Class getClassForSimpleName(String className)
                                   throws EventAdapterException
Returns the boxed class for the given classname, recognizing all primitive and abbreviations, uppercase and lowercase.

Recognizes "int" as Integer.class and "strIng" as String.class, and "Integer" as Integer.class, and so on.

Parameters:
className - is the name to recognize
Returns:
class
Throws:
EventAdapterException - is throw if the class cannot be identified

getPrimitiveClassForName

public static Class getPrimitiveClassForName(String typeName)
Returns the class for a Java primitive type name, ignoring case, and considering String as a primitive.

Parameters:
typeName - is a potential primitive Java type, or some other type name
Returns:
class for primitive type name, or null if not a primitive type.

parse

public static Object parse(Class clazz,
                           String text)
Parse the String using the given Java built-in class for parsing.

Parameters:
clazz - is the class to parse the value to
text - is the text to parse
Returns:
value matching the type passed in

isImplementsInterface

public static boolean isImplementsInterface(Class clazz,
                                            Class interfaceClass)
Method to check if a given class, and its superclasses and interfaces (deep), implement a given interface.

Parameters:
clazz - to check, including all its superclasses and their interfaces and extends
interfaceClass - is the interface class to look for
Returns:
true if such interface is implemented by any of the clazz or its superclasses or extends by any interface and superclasses (deep check)

© 2007 EsperTech Inc.
All rights reserved.
Visit us at espertech.com