Создание (упаковало) примитивный экземпляр, когда класс известен

OT: Algol68 RSRE имеет любопытное "/: =" оператор. например,

INT quotient:=355, remainder;
remainder := (quotient /:= 113);

Предоставление частного 3 и остатка от 16.

Примечание: обычно значение" (x/: = y)" отбрасывается, поскольку частное "x" присвоено ссылкой, но в случае RSRE возвращенное значение является остатком.

c.f. Целочисленная Арифметика - Algol68

8
задан Joonas Pulakka 13 November 2009 в 13:33
поделиться

1 ответ

Я подозреваю, что простейший способ - иметь карту:

private final static Map<Class<?>, Object> defaultValues = 
    new HashMap<Class<?>, Object>();
static
{
    defaultValues.put(String.class, "");
    defaultValues.put(Integer.class, 0);
    defaultValues.put(int.class, 0);
    defaultValues.put(Long.class, 0L);
    defaultValues.put(long.class, 0L);
    defaultValues.put(Character.class, '\0');
    defaultValues.put(char.class, '\0');
    // etc
}

К счастью, все эти типы неизменяемы, поэтому можно возвращать ссылку на один и тот же объект при каждом вызове одного и того же типа.

12
ответ дан 5 December 2019 в 14:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: