На основании ответа Джека Лиу , я создал этот класс:
/**
{@code java InitializedObjectUtil}
**/
public class InitializedObjectUtil {
public static final void main(String[] igno_red) {
printDefault("boolean");
printDefault("char");
printDefault("byte");
printDefault("short");
printDefault("int");
printDefault("long");
printDefault("float");
printDefault("double");
printDefault("java.lang.AnythingAndEverythingElse");
}
private static final void printDefault(String s_type) {
Object oDflt = InitializedObjectUtil.getForClassName(s_type);
System.out.println(s_type + " default is \"" + oDflt + "\"");
}
/**
The default value for a boolean is {@code false}.
Viewed 1/21/2014
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
:
Default Values:
It's not always necessary to assign a value when a field is declared. Fields that are declared but not initialized will be set to a reasonable default by the compiler. Generally speaking, this default will be zero or null, depending on the data type. Relying on such default values, however, is generally considered bad programming style. The following chart summarizes the default values for the above data types.
{@literal
Data Type Default Value (for fields)
--------------------------------------
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char '\u0000'
String (or any object) null
boolean false}
@see #getForClass (String) getForClass (s)
@see #getForClassName (String) getForClassName (s)
@see #DEFAULT_CHAR
@see #DEFAULT_BYTE
@see #DEFAULT_SHORT
@see #DEFAULT_INT
@see #DEFAULT_LONG
@see #DEFAULT_FLOAT
@see #DEFAULT_DOUBLE
** /
public static final Boolean DEFAULT_BOOLEAN = false;
/ **
Значение по умолчанию для символа {@code '\ u0000'}.
@see #DEFAULT_BOOLEAN
** /
public static final Character DEFAULT_CHAR = '\ u0000';
/ **
Значением по умолчанию для байта является {@code 0}.
@see #DEFAULT_BOOLEAN
** /
открытый статический финальный байт DEFAULT_BYTE = 0;
/ **
Значением по умолчанию для короткого замыкания является {@code 0}.
@see #DEFAULT_BOOLEAN
** /
public static final Short DEFAULT_SHORT = 0;
/ **
Значением по умолчанию для int является {@code 0}.
@see #DEFAULT_BOOLEAN
** /
public static final Integer DEFAULT_INT = 0;
/ **
Значением по умолчанию для long является {@code 0L}.
@see #DEFAULT_BOOLEAN
** /
общедоступная статическая финальная Long DEFAULT_LONG = 0L;
/ **
Значение по умолчанию для числа с плавающей запятой {@code 0.0f}.
@see #DEFAULT_BOOLEAN
** /
public static final Float DEFAULT_FLOAT = 0.0f;
/ **
Значение по умолчанию для двойного {@code 0.0d}.
@see #DEFAULT_BOOLEAN
** /
public static final Double DEFAULT_DOUBLE = 0.0d;
/ **
Получить объект, содержащий инициализированное значение для статического типа класса.
@param cls_static Не может быть {@code null}.
@return
{@link getForClassName(String) getForClassName}(cls_static.getName())
** /
public static final Object getForClass (Class cls_static) {
пытаться {
return getForClassName (cls_static.getName ());
} catch (RuntimeException rtx) {
бросить новое исключение NullPointerException ("getForClass: cls_static");
}
}
/ **
Получить объект, содержащий инициализированное значение для типа, имя которого находится в строке.
Идея от (просмотрено 1/2/2014)
& nbsp; & NBSP; {@code /2236073/poluchenie-znacheniya-po-umolchaniy-dlya-primitivnyh-tipov#2236079}
@param s_type Не может быть {@code null}.
@return, если {@code s_type} равен
- {@ code "boolean"}: {@link #DEFAULT_BOOLEAN}
- {@ code "char"}: {@link #DEFAULT_CHAR}
- {@ code "byte"}: {@link #DEFAULT_BYTE}
- {@ code "short"}: {@link #DEFAULT_SHORT}
- {@ code "int"}: {@link #DEFAULT_INT}
- {@ code "long"}: {@link #DEFAULT_LONG}
- {@ code "float"}: {@link #DEFAULT_FLOAT}
- {@ code "double"}: {@link #DEFAULT_DOUBLE}
- что-нибудь еще : {@code null}
@see #getForClass (Class) getForClass (cls)
** /
public static final Object getForClassName (String s_type) {
пытаться {
if (s_type.equals ("boolean")) {
вернуть DEFAULT_BOOLEAN;
}
} catch (NullPointerException npx) {
бросить новое исключение NullPointerException ("getForClassName: s_type");
}
if (s_type.equals ("char")) {
вернуть DEFAULT_CHAR;
}
if (s_type.equals ("byte")) {
вернуть DEFAULT_BYTE;
}
if (s_type.equals ("short")) {
вернуть DEFAULT_SHORT;
}
if (s_type.equals ("int")) {
return DEFAULT_INT;
}
if (s_type.equals ("long")) {
return DEFAULT_LONG;
}
if (s_type.equals ("float")) {
return DEFAULT_FLOAT;
}
if (s_type.equals ("double")) {
return DEFAULT_DOUBLE;
}
// Непримитивный тип
вернуть ноль;
}
}