Exemple #1
0
  /**
   * Returns the value to which the specified key is mapped, or null if this map contains no mapping
   * for the key. Safe version of get().
   *
   * <pre>{@code
   * Integer i = <Integer> map.get(key1, Integer);
   * }</pre>
   *
   * @param key key with which the specified value is to be associated.
   * @param type expected type.
   * @param defaultValue default value to return.
   * @param <T> type of return and default value, inferred
   * @return Value.
   */
  public <T> T get(ExtKey key, Class<T> type, T defaultValue) {
    if (!key.getType().isAssignableFrom(type)) {
      throw new IllegalArgumentException(
          String.format("Cannnot assign key '%s' into type '%s'", key, type));
    }
    if (defaultValue != null && !key.getType().isAssignableFrom(defaultValue.getClass())) {
      throw new IllegalArgumentException(
          String.format(
              "Cannnot assign default value of '%s' into type '%s'", defaultValue.getClass(), key));
    }

    T value = type.cast(map.get(key));
    if (value == null) {
      value = defaultValue;
    }

    return value;
  }
Exemple #2
0
 /**
  * Returns the value to which the specified key is mapped, or default. Unsafe method of get with
  * cast.
  *
  * <pre>{@code
  * Integer i = <Integer> map.get(key1, 5);
  * }</pre>
  *
  * @param key key.
  * @param defaultValue default value.
  * @param <T> type of return and default value, inferred
  * @return Value.
  */
 @SuppressWarnings("unchecked")
 public <T> T get(ExtKey key, Object defaultValue) {
   if (defaultValue != null && !key.getType().isAssignableFrom(defaultValue.getClass())) {
     throw new IllegalArgumentException(
         String.format(
             "Cannnot assign default value of '%s' into type '%s'", defaultValue.getClass(), key));
   }
   Object value = get(key);
   if (value == null) {
     value = defaultValue;
   }
   return (T) value;
 }
Exemple #3
0
 /** Check if value matches key type. */
 private void checkKeyValue(ExtKey key, Object value) {
   if (!key.getType().isInstance(value)) {
     throw new IllegalArgumentException(
         String.format("Cannnot assign type '%s' into key '%s'", value.getClass(), key));
   }
 }