map泛型 map不指定泛型 与 Map<Object,Object>的区别
map泛型 map不指定泛型 与 Map<Object,Object>的区别
private void viewDetail(){
Map map1 = new HashMap();
Map<String,Object> map2 = new HashMap<String,Object>();
Map<Object,Object> map3 = new HashMap<Object,Object>();
Map<String,String> map4 = new HashMap<String,String>();
test1(map1);
test1(map2);
test1(map3); //编译错误
test1(map4); //编译错误
}
private void test1(Map<String,Object> map){
}
在泛型这里 Object 就只表示Object 不能表示所有对象
因为泛型是保证编译时你给的实际类型和参数声明的类型一致,它的意义就在于此,不需要解释,这是需要你学习的规则而已。
那为什么map1就可以呢,这里有历史原因,因为泛型是后加入的,早期的版本没有,但是java的开发者希望不能因为加入泛型就要修改成千上万的现有应用,所以默认他可以通融老版本不加泛型的变量,但是编译时一定会有提示你有危险代码的。
正因为这样,泛型非常的好破,随便写点代码就可以让编译通过,而运行时错误,所以现在开发,一定要使用一种代码,千万不要两者都用,那样太危险,如果你用了泛型,就全部都用,切记切记
map泛型 map不指定泛型 与 Map<Object,Object>的区别的更多相关文章
- java 判断Map集合中包含指定的键名,则返回true,否则返回false。
public static void main(String[] args) { Map map = new HashMap(); //定义Map对象 map.put("apple" ...
- java数据类型:集合存储元素类型限制<泛型> ;自定义类指定泛型<T> 以及限制用法;派生子类泛型<T> super(泛型内参数); 泛型通配符?以及?限制用法
问题背景 Java 集合有个缺点,把一个对象"丢进"集合里之后,集合就会"忘记"这个对象的数据类型,当再次取出该对象时 该对象的编译类型就变Object类型(其 ...
- 自定义实现JavaScript的Map对象,修改IE不兼容MAP()的问题
由于IE8及以下版本不支持Map对象,本文为程序猿们提供了有效的解决方法. 本文重写了Map对象,实现了常用的set, get, put, clear, remove, delete, forEach ...
- Map接口中的常用方法和Map集合遍历键找值方式
Map接口中定义了很多方法,常用的如下: public V put(K key,V value) 将指定的值与此映射中的指定键相关联(可选操作) V remove(Object key); 如果此映射 ...
- Linq查询非泛型集合要指定Student类型(比如List)
#region Linq to 集合查询非泛型集合要指定Student类型 //ArrayList list = new ArrayList(); //li ...
- 使用HashMap须要注意的事儿:不要暴露Map.entry给外部不可信代码Map.entrySet()
Map/HashMap是java中一种非经常常使用的数据结构,一般我们在应用中做的事情就是调用put向容器写入数据或者是get从容器读取数据. Map.entrySet()这种方法返回了键值对的集合, ...
- JavaBean转化为Map,List<JavaBean>转化为List<Map>
/** * 将对象转化为map * * @param bean * @param <T> * @return */ private <T> Map<String, Obj ...
- HashMap和Hashtable的区别--List,Set,Map等接口是否都继承自Map接口--Collection和Collections的区别
面试题: 1.HashMap和Hashtable的区别? HashMap:线程不安全,效率高,键和值都允许null值 Hashtable:线程安全,效率低,键和值都不允许null值 ArrayList ...
- 一个list<Map>里map其中的一个字段的值相同,如何判断这个字段相同,就把这个map的其他字段存入另一个map中
//不建议使用Map保存这些,使用实体bean更好 package com.rxlamo.zhidao; import java.util.*; public class Main { ...
随机推荐
- Linux重定向: > 和 &> 区别
总结:>只能将正常信息重定向 &>可以将错误信息或者普通信息都重定向输出(下面是实测) [root@Dev_yang shellScript]# lll -bash: lll: c ...
- bzoj3790 manacher算法+贪心
紧跟jk大佬的步伐 这道题哇 因为机器一能生成回文串 所以我们只要用manacher跑一遍求出q[i]这样就把问题转化成了类似线段覆盖的题目 贪心就好了 至于,BIT优化dp我不会所以直接贪心了 注意 ...
- 【Python实例二】BeautifulSoup爬虫简单实践
前言 前面安装了BeautifulSoup库,现在就来实现一下吧. 目录 一.Urllib库的使用 二.BeautifulSoup的使用 三. 一个示例 ----------------------- ...
- JavaScript DOM编程艺术 读书笔记
2. JavaScript语法 2.1 注释 HTML允许使用"<!--"注释跨越多个行,但JavaScript要求这种注释的每行都必须在开头加上"< ...
- linux软件管理(Vim编辑器使用) ——(七)
windows : .exe 安装 .卸载 安装: mysql.exe cc.exe 卸载 : 该软件唯一的标识 ,包名 alibaba android : *.apk 卸载 包 ...
- 160多条Windows 7 “运行”命令
160多条Windows 7 “运行”命令: 删除或更改应用程序 = control appwiz.cpl 添加设备 = devicepairingwizard 蓝牙文件传输 = fsquirt ...
- [Leetcode Week3]Evaluate Division
Evaluate Division题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/evaluate-division/description/ Desc ...
- linux驱动基础系列--linux spi驱动框架分析(续)
前言 这篇文章是对linux驱动基础系列--linux spi驱动框架分析的补充,主要是添加了最新的linux内核里设备树相关内容. spi设备树相关信息 如之前的文章里所述,控制器的device和s ...
- 使用Tslib在触摸屏上显示汉字【转】
转自:http://www.latelee.org/embedded-linux/use-tslib-to-display-chinese-character.html 终于到了在触摸屏上显示汉字了, ...
- React 踩坑记录
1.React-router error: super expression must either be null or a function 原因:引入babel后写ES6风格的代码: class ...