bsh

Class Primitive

Implemented Interfaces:
ParserConstants, java.io.Serializable

public final class Primitive
extends java.lang.Object
implements ParserConstants, java.io.Serializable

Wrapper for primitive types in Bsh. This is package public because it is used in the implementation of some bsh commands. See the note in LHS.java about wrapping objects.
See Also:
Serialized Form

Field Summary

static Primitive
NULL
static Primitive
VOID
VOID means "no type".

Fields inherited from interface bsh.ParserConstants

ABSTRACT, ANDASSIGN, ANDASSIGNX, ASSIGN, BANG, BIT_AND, BIT_ANDX, BIT_OR, BIT_ORX, BOOLEAN, BOOL_AND, BOOL_ANDX, BOOL_OR, BOOL_ORX, BREAK, BYTE, CASE, CATCH, CHAR, CHARACTER_LITERAL, CLASS, COLON, COMMA, CONST, CONTINUE, DECIMAL_LITERAL, DECR, DEFAULT, DIGIT, DO, DOT, DOUBLE, ELSE, ENUM, EOF, EQ, EXPONENT, EXTENDS, FALSE, FINAL, FINALLY, FLOAT, FLOATING_POINT_LITERAL, FOR, FORMAL_COMMENT, GE, GEX, GOTO, GT, GTX, HASH_BANG_COMMENT, HEX_LITERAL, HOOK, IDENTIFIER, IF, IMPLEMENTS, IMPORT, INCR, INSTANCEOF, INT, INTEGER_LITERAL, INTERFACE, LBRACE, LBRACKET, LE, LETTER, LEX, LONG, LPAREN, LSHIFT, LSHIFTASSIGN, LSHIFTASSIGNX, LSHIFTX, LT, LTX, MINUS, MINUSASSIGN, MOD, MODASSIGN, MULTI_LINE_COMMENT, NATIVE, NE, NEW, NONPRINTABLE, NULL, OCTAL_LITERAL, ORASSIGN, ORASSIGNX, PACKAGE, PLUS, PLUSASSIGN, PRIVATE, PROTECTED, PUBLIC, RBRACE, RBRACKET, RETURN, RPAREN, RSIGNEDSHIFT, RSIGNEDSHIFTASSIGN, RSIGNEDSHIFTASSIGNX, RSIGNEDSHIFTX, RUNSIGNEDSHIFT, RUNSIGNEDSHIFTASSIGN, RUNSIGNEDSHIFTASSIGNX, RUNSIGNEDSHIFTX, SEMICOLON, SHORT, SINGLE_LINE_COMMENT, SLASH, SLASHASSIGN, STAR, STARASSIGN, STATIC, STRICTFP, STRING_LITERAL, SWITCH, SYNCHRONIZED, THROW, THROWS, TILDE, TRANSIENT, TRUE, TRY, VOID, VOLATILE, WHILE, XOR, XORASSIGN, _DEFAULT, tokenImage

Constructor Summary

Primitive(Object value)
Primitive(boolean value)
Primitive(byte value)
Primitive(char value)
Primitive(double value)
Primitive(float value)
Primitive(int value)
Primitive(long value)
Primitive(short value)

Method Summary

static Object
binaryOperation(Object obj1, Object obj2, int kind)
Perform a binary operation on two Primitives or wrapper types.
boolean
booleanValue()
static Class
boxType(Class primitiveType)
Get the corresponding java.lang wrapper class for the primitive TYPE class.
Primitive
castToType(Class toType, int operation)
Cast this bsh.Primitive value to a new bsh.Primitive value This is usually a numeric type cast.
boolean
equals(Object obj)
Primitives compare equal with other Primitives containing an equal wrapped value.
static Primitive
getDefaultValue(Class type)
Get the appropriate default value per JLS 4.5.4
Class
getType()
Get the corresponding Java primitive TYPE class for this Primitive.
Object
getValue()
Return the primitive value stored in its java.lang wrapper class
int
hashCode()
The hash of the Primitive is tied to the hash of the wrapped value but shifted so that they are not the same.
int
intValue()
boolean
isNumber()
Determine if this primitive is a numeric type.
static boolean
isWrapperType(Class type)
Number
numberValue()
String
toString()
static Primitive
unaryOperation(Primitive val, int kind)
static Class
unboxType(Class wrapperType)
Get the corresponding primitive TYPE class for the java.lang wrapper class type.
static Object
unwrap(Object obj)
Unwrap primitive values and map voids to nulls.
static Object[]
unwrap(Object[] args)
static Object
wrap(Object value, Class type)
Wrap primitive values (as indicated by type param) and nulls in the Primitive class.
static Object[]
wrap(Object[] args, Class[] paramTypes)

Field Details

NULL

public static final Primitive NULL

VOID

public static final Primitive VOID
VOID means "no type". Strictly speaking, this makes no sense here. But for practical reasons we'll consider the lack of a type to be a special value.

Constructor Details

Primitive

public Primitive(Object value)

Primitive

public Primitive(boolean value)

Primitive

public Primitive(byte value)

Primitive

public Primitive(char value)

Primitive

public Primitive(double value)

Primitive

public Primitive(float value)

Primitive

public Primitive(int value)

Primitive

public Primitive(long value)

Primitive

public Primitive(short value)

Method Details

binaryOperation

public static Object binaryOperation(Object obj1,
                                     Object obj2,
                                     int kind)
            throws UtilEvalError
Perform a binary operation on two Primitives or wrapper types. If both original args were Primitives return a Primitive result else it was mixed (wrapper/primitive) return the wrapper type. The exception is for boolean operations where we will return the primitive type either way.

booleanValue

public boolean booleanValue()
            throws UtilEvalError

boxType

public static Class boxType(Class primitiveType)
Get the corresponding java.lang wrapper class for the primitive TYPE class. e.g. Integer.TYPE -> Integer.class

castToType

public Primitive castToType(Class toType,
                            int operation)
            throws UtilEvalError
Cast this bsh.Primitive value to a new bsh.Primitive value This is usually a numeric type cast. Other cases include: A boolean can be cast to boolen null can be cast to any object type and remains null Attempting to cast a void causes an exception
Parameters:
toType - is the java object or primitive TYPE class

equals

public boolean equals(Object obj)
Primitives compare equal with other Primitives containing an equal wrapped value.

getDefaultValue

public static Primitive getDefaultValue(Class type)
Get the appropriate default value per JLS 4.5.4

getType

public Class getType()
Get the corresponding Java primitive TYPE class for this Primitive.
Returns:
the primitive TYPE class type of the value or Void.TYPE for Primitive.VOID or null value for type of Primitive.NULL

getValue

public Object getValue()
Return the primitive value stored in its java.lang wrapper class

hashCode

public int hashCode()
The hash of the Primitive is tied to the hash of the wrapped value but shifted so that they are not the same.

intValue

public int intValue()
            throws UtilEvalError

isNumber

public boolean isNumber()
Determine if this primitive is a numeric type. i.e. not boolean, null, or void (but including char)

isWrapperType

public static boolean isWrapperType(Class type)

numberValue

public Number numberValue()
            throws UtilEvalError

toString

public String toString()

unaryOperation

public static Primitive unaryOperation(Primitive val,
                                       int kind)
            throws UtilEvalError

unboxType

public static Class unboxType(Class wrapperType)
Get the corresponding primitive TYPE class for the java.lang wrapper class type. e.g. Integer.class -> Integer.TYPE

unwrap

public static Object unwrap(Object obj)
Unwrap primitive values and map voids to nulls. Non Primitive types remain unchanged.
Parameters:
obj - object type which may be bsh.Primitive
Returns:
corresponding "normal" Java type, "unwrapping" any bsh.Primitive types to their wrapper types.

unwrap

public static Object[] unwrap(Object[] args)

wrap

public static Object wrap(Object value,
                          Class type)
Wrap primitive values (as indicated by type param) and nulls in the Primitive class. Values not primitive or null are left unchanged. Primitive values are represented by their wrapped values in param value.

The value null is mapped to Primitive.NULL. Any value specified with type Void.TYPE is mapped to Primitive.VOID.


wrap

public static Object[] wrap(Object[] args,
                            Class[] paramTypes)

© 2000-2005 pat@pat.net :-)