in archaius2-core/src/main/java/com/netflix/archaius/property/DefaultPropertyContainer.java [362:394]
public <T> Property<T> asType(final Class<T> type, final T defaultValue) {
switch (Type.fromClass(type)) {
case INTEGER:
return (Property<T>) asInteger((Integer)defaultValue);
case BYTE:
return (Property<T>) asByte((Byte)defaultValue);
case SHORT:
return (Property<T>) asShort((Short)defaultValue);
case DOUBLE:
return (Property<T>) asDouble((Double)defaultValue);
case FLOAT:
return (Property<T>) asFloat((Float)defaultValue);
case BOOLEAN:
return (Property<T>) asBoolean((Boolean)defaultValue);
case STRING:
return (Property<T>) asString((String)defaultValue);
case LONG:
return (Property<T>) asLong((Long)defaultValue);
case BIG_DECIMAL:
return (Property<T>) asBigDecimal((BigDecimal)defaultValue);
case BIG_INTEGER:
return (Property<T>) asBigInteger((BigInteger)defaultValue);
default: {
CachedProperty<T> prop = add(new CachedProperty<T>(Type.CUSTOM, defaultValue) {
@Override
protected T resolveCurrent() throws Exception {
return config.get(type, key, defaultValue);
}
});
return prop;
}
}
}