zoukankan      html  css  js  c++  java
  • 類型安全很重要

    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
  • 相关阅读:
    HQL语句中类的别名语法以及作用?
    C#面向对象
    c#异步编程一
    c#接口
    c#Socket通信基本使用
    c#FTP基本使用
    c#XML的基本使用
    c#装箱与拆箱
    c#数组与集合
    c#中for与foreach的使用
  • 原文地址:https://www.cnblogs.com/CherryTab/p/11884571.html
Copyright © 2011-2022 走看看