package org.codelibs.riverweb.util; import java.util.Map; public final class SettingsUtils { private SettingsUtils() { } public static <T, V> T get(final Map<String, V> settings, final String key) { return get(settings, key, null); } @SuppressWarnings("unchecked") public static <T, V> T get(final Map<String, V> settings, final String key, final T defaultValue) { if (settings != null) { final V value = settings.get(key); if (value instanceof Number) { if (defaultValue instanceof Integer) { return (T) Integer.valueOf(((Number) value).intValue()); } else if (defaultValue instanceof Long) { return (T) Long.valueOf(((Number) value).longValue()); } else if (defaultValue instanceof Float) { return (T) Float.valueOf(((Number) value).floatValue()); } else if (defaultValue instanceof Double) { return (T) Double.valueOf(((Number) value).doubleValue()); } else { return (T) value; } } else if (value != null) { return (T) value; } } return defaultValue; } }