類型安全很重要
package test; import java.util.HashMap; import java.util.Map; import java.util.Objects; public class Test implements Favorite { private Map<Class<?>, Object> favorites = new HashMap<>(); @Override public <T> void putFavorite(Class<T> type, T instance) { favorites.put(Objects.requireNonNull(type), type.cast(instance)); } @Override public <T> T getFavorite(Class<T> type) { return type.cast(favorites.get(type)); } public static void main(String[] args) { Test test = new Test(); test.putFavorite(String.class, "java"); test.putFavorite(Integer.class, 1111); String favorite = test.getFavorite(String.class); } }
要處處考慮類型安全,編譯時,運行時。
总之,泛型 API 的通常用法(以集合 API 为例)限制了每个容器的固定数量的类型参数。 你可以通过将类型参数 放在键上而不是容器上来解决此限制。 可以使用 Class 对象作为此类型安全异构容器的键。 以这种方式使用的 Class 对象称为类型令牌。 也可以使用自定义键类型。 例如,可以有一个表示数据库行(容器)的 DatabaseRow 类型和一个泛型类型 Column<T> 作为其键。
一个没有高级趣味的人。
email:hushui502@gmail.com