关于Map泛型问题?我想取出的value为任意类型,不用类型转换?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Map泛型问题?我想取出的value为任意类型,不用类型转换?相关的知识,希望对你有一定的参考价值。
比如:Map map;一个map中存储了三种类型数据,取出
Integer age = map.get("age");
String name = map.get("name");
Double score = map.get("score");
取出时直接就是存进去的类型,不用额外转换类型,请问能怎么做到?
....
Integer age = (Integer) map.get("age");追问
你没看懂我的问题,
Integer age = map.get("age"); 希望是这种形式,不用强制类型转换......
要么强制转换,要么value只能存一种类型
参考技术B 如果按照你这种情况,那么声明map时他的value必须制定类型就不需要转换 参考技术C 你说的这个 javascript 可以做到 java 不行java复习过程中的知识点总结
java复习过程中的知识点总结
关于泛型
为什么使用泛型?
集合可以存储任意对象,但是如果需要使用对象特有的方法,需要类型转换,如果集合存入的对象不同,会出现类型转换异常。而且在编译期无法发现问题。可以在类型转换的时候通过if语句进行类型检查(instanceof),不过效率并不高。因此引入了泛型的概念。
使用泛型的优点:
1.使用泛型后,取出的对象不需要进行强制类型转换
2.将运行时的异常提前到了编译期
什么时候使用泛型?
当类中操作的引用数据类型不确定的时候。
使用泛型要注意的问题:
1.声明好泛型后,集合只能存放特定类型元素
2.泛型类型必须是引用类型,需要使用基本类型,则使用包装类
3.使用泛型后,取出的元素不需要类型转换
泛型方法
泛型:就是将类型当做变量处理。规范泛型的定义一般是一个大写的任意字母
函数上的泛型定义:
当函数使用了不明确的数据类型,可以在函数上进行泛型定义
public <泛型的声明> 返回值类型 函数名(泛型 变量名)
使用泛型方法细节:
使用泛型方法之前,需要进行泛型声明,<泛型>,声明的位置在static后返回值类型前
当一个类多个函数声明泛型,函数声明可以声明在类上
泛型类
格式: 修饰符 class 类名<泛型>{}
注意:静态方法不能使用类定义的泛型
类中的泛型需要在对象初始化时指定具体的类型,而静态优于对象存在。那类中的静态方法需要单独进行泛型声明
泛型类的细节:
1.创建对象的时候要指定泛型的具体类型,如果没有指定,默认为object类型
2.建立对象后指定了泛型的具体类型,那么该对象操作方法时,这些方法只能操作一种数据类型
如果泛型类指定了子类:
1.子类可以指定具体的类型,也可以使用泛型
class son<T> extends Father<T>{}
泛型接口
实现不知什么类型时的定义:
class MyInter<T> implements Inter<T>
使用接口时明确具体类型
class MyInter2 implements Inter<String>
以上是关于关于Map泛型问题?我想取出的value为任意类型,不用类型转换?的主要内容,如果未能解决你的问题,请参考以下文章