bam*_*222 5 java types casting hashmap
假设我想取得HashMap成绩。
Map<String,Integer> grades = new HashMap<String,Integer>();
grades.put("John", 87); // this work due to auto-boxing right?
grades.put("Luke", Integer(85)); // non-autoboxed, is this redundant?
Run Code Online (Sandbox Code Playgroud)
为什么地图分在左边和HashMap<K, V>( );右边?每当创建对象时都需要类型一致性,这不是一条规则吗?除非名称的静态类型是 Map 并且动态类型是HashMap,它可能是 的子类Map。但你为什么要这样做呢?方法调用是从对象静态类型(例如 s)的角度调用的Map,但如果动态类型中有重写的方法,则会调用这些方法。这就是类型不同的原因吗?
谢谢!新手问题,但这东西可能会令人困惑......
编辑:
谢谢!所以一般格式为:Interface varName = new ImplementedClassConstructor(); ?我们经常选择超类接口,因为它允许以后更容易替换(例如,如果我想将 HashMap 更改为 TreeMap?
| 归档时间: |
|
| 查看次数: |
3509 次 |
| 最近记录: |