关于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");
取出时直接就是存进去的类型,不用额外转换类型,请问能怎么做到?

参考技术A Map<String, Object> map=new HashMap<String, Object>();

....
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为任意类型,不用类型转换?的主要内容,如果未能解决你的问题,请参考以下文章

请教大神,js中怎么取出map中的value,map格式为map:map.为啥会出现“=”?

Java中可以通过泛型参数区分类型吗?

关于泛型

关于java中HashMap的put方法中的参数问题

Java泛型

java复习过程中的知识点总结