Class Data (1.47.0)

public class Data

Utilities for working with key/value data based on the Key annotation.

Inheritance

Object > Data

Static Fields

NULL_BIG_DECIMAL

public static final BigDecimal NULL_BIG_DECIMAL

The single instance of the magic null object for a BigDecimal.

Field Value
Type Description
BigDecimal

NULL_BIG_INTEGER

public static final BigInteger NULL_BIG_INTEGER

The single instance of the magic null object for a BigInteger.

Field Value
Type Description
BigInteger

NULL_BOOLEAN

public static final Boolean NULL_BOOLEAN

The single instance of the magic null object for a Boolean.

Field Value
Type Description
Boolean

NULL_BYTE

public static final Byte NULL_BYTE

The single instance of the magic null object for a Byte.

Field Value
Type Description
Byte

NULL_CHARACTER

public static final Character NULL_CHARACTER

The single instance of the magic null object for a Character.

Field Value
Type Description
Character

NULL_DATE_TIME

public static final DateTime NULL_DATE_TIME

The single instance of the magic null object for a DateTime.

Field Value
Type Description
DateTime

NULL_DOUBLE

public static final Double NULL_DOUBLE

The single instance of the magic null object for a Double.

Field Value
Type Description
Double

NULL_FLOAT

public static final Float NULL_FLOAT

The single instance of the magic null object for a Float.

Field Value
Type Description
Float

NULL_INTEGER

public static final Integer NULL_INTEGER

The single instance of the magic null object for a Integer.

Field Value
Type Description
Integer

NULL_LONG

public static final Long NULL_LONG

The single instance of the magic null object for a Long.

Field Value
Type Description
Long

NULL_SHORT

public static final Short NULL_SHORT

The single instance of the magic null object for a Short.

Field Value
Type Description
Short

NULL_STRING

public static final String NULL_STRING

The single instance of the magic null object for a String.

Field Value
Type Description
String

Static Methods

clone(T data)

public static T <T>clone(T data)

Returns a deep clone of the given key/value data, such that the result is a completely independent copy.

This should not be used directly in the implementation of Object.clone(). Instead use #deepCopy(Object, Object) for that purpose.

Final fields cannot be changed and therefore their value won't be copied.

Parameter
Name Description
data T

key/value data object or map to clone or null for a null return value

Returns
Type Description
T

deep clone or null for null input

nullOf(Class objClass)

public static T <T>nullOf(Class objClass)

Returns the single instance of the magic object that represents the "null" value for the given Java class (including array or enum).

Parameter
Name Description
objClass Class<T>

class of the object needed

Returns
Type Description
T

magic object instance that represents the "null" value (not Java null)

deepCopy(Object src, Object dest)

public static void deepCopy(Object src, Object dest)

Makes a deep copy of the given source object into the destination object that is assumed to be constructed using Object.clone().

Example usage of this method in Object.clone():

@Override public MyObject clone() { try { @SuppressWarnings("unchecked") MyObject result = (MyObject) super.clone(); Data.deepCopy(this, result); return result; } catch (CloneNotSupportedException e) { throw new IllegalStateException(e); } }

Final fields cannot be changed and therefore their value won't be copied.

Parameters
Name Description
src Object

source object

dest Object

destination object of identical type as source object, and any contained arrays must be the same length

isNull(Object object)

public static boolean isNull(Object object)

Returns whether the given object is the magic object that represents the null value of its class.

Parameter
Name Description
object Object

object or null

Returns
Type Description
boolean

whether it is the magic null value or false for null input

isPrimitive(Type type)

public static boolean isPrimitive(Type type)

Returns whether the given type is one of the supported primitive classes like number and date/time, or is a wildcard of one.

A primitive class is any class for whom Class#isPrimitive() is true, as well as any classes of type: Character, String, Integer, Long, Short, Byte, Float, Double, BigInteger, BigDecimal, Boolean, and DateTime.

Parameter
Name Description
type Type

type or null for false result

Returns
Type Description
boolean

whether it is a primitive

isValueOfPrimitiveType(Object fieldValue)

public static boolean isValueOfPrimitiveType(Object fieldValue)

Returns whether to given value is null or its class is primitive as defined by Data#isPrimitive(Type).

Parameter
Name Description
fieldValue Object
Returns
Type Description
boolean

mapOf(Object data)

public static Map,Object> mapOf(Object data)

Returns the map to use for the given data that is treated as a map from string key to some value.

If the input is null, it returns an empty map. If the input is a map, it simply returns the input. Otherwise, it will create a map view using reflection that is backed by the object, so that any changes to the map will be reflected on the object. The map keys of that map view are based on the Key annotation, and null is not a possible map value, although the magic null instance is possible (see Parameter Name Description data Object

any key value data, represented by an object or a map, or null

Returns
Type Description
Map<String,Object>

key/value map to use

newCollectionInstance(Type type)

public static Collection newCollectionInstance(Type type)
  
  

Returns a new collection instance for the given type.

Creates a new collection instance specified for the first input collection class that matches as follows:

  • null or an array or assignable from ArrayList (like List or Collection or Object): returns an ArrayList
  • assignable from HashSet: returns a HashSet
  • assignable from TreeSet: returns a TreeSet
  • else: calls Parameter Name Description type Type

    type or null for ArrayList.

    Returns
    Type Description
    Collection<Object>

    new collection instance

    newMapInstance(Class mapClass)

    public static Map,Object> newMapInstance(Class<?> mapClass)

    Returns a new instance of a map based on the given field class.

    Creates a new map instance specified for the first input map class that matches as follows:

    • null or assignable from ArrayMap (like Map or Object): returns an ArrayMap
    • assignable from TreeMap (like SortedMap): returns a TreeMap
    • else: calls Parameter Name Description mapClass Class<?>

      field class

      Returns
      Type Description
      Map<String,Object>

      parsePrimitiveValue(Type type, String stringValue)

      public static Object parsePrimitiveValue(Type type, String stringValue)

      Parses the given string value based on the given primitive type.

      Types are parsed as follows:

      Note that this may not be the right behavior for some use cases.

      Parameters
      Name Description
      type Type

      primitive type or null to parse as a string

      stringValue String

      string value to parse or null for null result

      Returns
      Type Description
      Object

      parsed object or null for null input

      resolveWildcardTypeOrTypeVariable(List context, Type type)

      public static Type resolveWildcardTypeOrTypeVariable(List context, Type type)

      Aggressively resolves the given type in such a way that the resolved type is not a wildcard type or a type variable, returning Object.class if the type variable cannot be resolved.

      Parameters
      Name Description
      context List<Type>

      context list, ordering from least specific to most specific type context, for example container class and then its field

      type Type

      type or null for null result

      Returns
      Type Description
      Type

      resolved type (which may be class, parameterized type, or generic array type, but not wildcard type or type variable) or null for null input

      Constructors

      Data()

      public Data()