use*_*646 2 java generics hashmap
我为我的程序使用了HashMap,它工作正常,但我不明白HashMap的这些初始化之间的区别.
假设我正在实现一个HashMap,其中一个字符作为键,一个整数作为值.这些有什么区别?
HashMap<Character, Integer> alphabet1 = new HashMap();
HashMap<Character, Integer> alphabet1 = new HashMap<Character, Integer>();
HashMap alphabet1 = new HashMap<Character, Integer>();
Map alphabet1 = new HashMap<Character, Integer>();
HashMap alphabet1 = new HashMap<Character, Integer>();
HashMap alphabet1 = new HashMap();
Map alphabet1 = new HashMap();
Run Code Online (Sandbox Code Playgroud)
任何涉及HashMap或Map不包含类型参数的东西(尖括号<和>以及它们之间的部分)都是原始类型,不应使用.原始类型不是通用的,可以让您做出不安全的事情.
"正确"的方式是
Map<Character, Integer> alphabet1 = new HashMap<Character, Integer>();
HashMap<Character, Integer> alphabet1 = new HashMap<Character, Integer>();
Run Code Online (Sandbox Code Playgroud)
第一个使用接口Map作为引用类型.它通常更具惯用性和良好风格.
另一种方法是你没有提到,使用Java 7钻石操作符
Map<Character, Integer> alphabet1 = new HashMap<>();
HashMap<Character, Integer> alphabet1 = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)
这或多或少等同于前两种正确的方法.左侧的引用类型的参数隐式提供给右侧的构造函数.
| 归档时间: |
|
| 查看次数: |
756 次 |
| 最近记录: |