1、一个优秀的泛型,建议不要这样写
public static <K, V> Map<K, V> getMap(String source, String firstSplit, String secondSplit)

建议可以这样写
public static <K, V> Map<K, V> getMap(List<K> keys, List<V> values)
或类似
public class MapItem<K, V>
{
public K key;
public V value;
}
public static <K, V> Map<K, V> getMap(List<MapItem<K, V>> items)

也就是即然你是泛型,你就泛吧,最好不要混用。即然混用了,“泛”就失去意义了,那还是议直接一点

public static Map<String, Integer> getMap(String source, String firstSplit, String secondSplit) {

Map<String, Integer> result = new HashMap<String, Integer>();
if (source.equals("")) {
return result;
}
String[] strings = source.split(firstSplit);
for (int i = 0; i < strings.length; i++) {
String[] tmp = strings[i].split(secondSplit);
if (tmp.length == 2) {
result.put(tmp[0], Integer.parseInt(tmp[1])); 
}
}

return result;
}

2、泛型一般具有“通用”性,如果我们真想这么做,是否可以这样呢?

//使用泛型,用于具体类型当中
public static Map<String, Integer> getMap(String source, String firstSplit, String secondSplit){
String[] strings = source.split(firstSplit);
ArrayList<MapItem<String, Integer>> items = new ArrayList<MapItem<String, Integer>>();
for (int i = 0; i < strings.length; i++) {
String[] tmp = strings[i].split(secondSplit);
if (tmp.length == 2) {
MapItem<String, Integer> item = new MapItem<String, Integer>();
item.key = tmp[0];
item.value = Integer.parseInt(tmp[1]);
items.add(item); 
}
}
return toMap(items);
}

//使用泛形,以提供通用性封装
public static <K, V> Map<K, V> toMap(List<MapItem<K,V>> items){ 
Map<K, V> result = new HashMap<K, V>();
for (MapItem<K, V> item : items) {
result.put(item.key, item.value);
}

3、有时候一个东西总感觉不好用时,是不是本来我们就使用过度了或设计不足,而偏离了其本质?我个人觉得Java和C#的泛型都很好,提高了编码的效率和可复用性。

http://www.cnblogs.com/magialmoon/p/3803114.html

Java泛型的一点用法(转)的更多相关文章

  1. Java泛型总结---基本用法,类型限定,通配符,类型擦除

    一.基本概念和用法 在Java语言处于还没有出现泛型的版本时,只能通过Object是所有类型的父类和类型强制转换两个特点的配合来实现类型泛化.例如在哈希表的存取中,JDK1.5之前使用HashMap的 ...

  2. Java 泛型 四 基本用法与类型擦除

    简介 Java 在 1.5 引入了泛型机制,泛型本质是参数化类型,也就是说变量的类型是一个参数,在使用时再指定为具体类型.泛型可以用于类.接口.方法,通过使用泛型可以使代码更简单.安全.然而 Java ...

  3. 关于Java泛型"擦除"的一点思考

    头次写博客,想说的东西不难,关于泛型的疑问,是前一阵在学习jackson中遇到的. 下面就把我所想到的.遇到的,分享出来. 泛型是JDK1.5后的一个特性,是一个参数类型的应用,可以将这个参数声明在类 ...

  4. Java泛型用法总结

    普通泛型 class Point< T>{ // 此处可以随便写标识符号,T是type的简称 private T var ; // var的类型由T指定,即:由外部指定 public T ...

  5. JAVA 泛型 通配符? extends super限定,实例区分extends super限定的作用用法

    java泛型中的关键字 ? 表示通配符类型 <? extends T> 既然是extends,就是表示泛型参数类型的上界,说明参数的类型应该是T或者T的子类. <? super T& ...

  6. 关于Java泛型实现原理的思考与一般用法示例总结

    面向对象的一个重要目标是对代码重用的支持.支持这个目标的一个重要机制就是泛型机制.在1.5版本之前,java并没有直接支持泛型实现,泛型编程的实现时通过使用继承的一些基本概念来完成的. 这种方式的局限 ...

  7. Java泛型总结

    1. 什么是泛型?泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型的 ...

  8. java泛型的讲解

    java泛型 什么是泛型? 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指 ...

  9. Java 泛型完全解读

    对于泛型的使用我想大家都非常熟悉,但是对于类型擦除,边界拓展等细节问题,可能不是很清楚,所以本文会重点讲解一下:另外对泛型的了解其实可以看出,一个语言特性的产生逻辑,这对我们平时的开发也是非常有帮助的 ...

随机推荐

  1. QF——OC中的KVC,KVO

    KVC: (Key Value Coding) 键值编码 所谓KVC,其实就是不通过set和get方法访问对象属性,而是通过属性名字符串动态的去读取属性.KVC其实也是OC反射机制的一种运用. 之所以 ...

  2. window.showModalDialog的基本用法

    window.showModalDialog的基本用法 showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.show ...

  3. Eclipse --Type /com.xx.app/gen already exists but is not a source folde解决方案

    两种解决方案: Two actions, first: 1.Right click on the project and go to "Properties" 2.Select & ...

  4. zookeeper参考

        ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护.名字服务.分布式同步.组服务等.     我需要运行几个 ...

  5. 玉兔IM(康林的博客)

    玉兔即时通信 作者:康林(msn.email:kl222@126.com:QQ:16614119) 博客:http://blog.csdn.net/kl222http://blog.csdn.net/ ...

  6. git创建标签

    创建标签 在Git中打标签非常简单,首先,切换到需要打标签的分支上: $ git branch * dev master $ git checkout master Switched to branc ...

  7. 一个基于Qt的截屏程序

    最近有一个arm板上的程序需要重写用户手册,在网上找了许久,没找到合适的截屏工具.于是只好自己动手做一个了. 因为arm板上有已经有了Qt环境,于是想到用 Qt的QPixmap::grabWindow ...

  8. aliyun 启用ECS iptables

    iptables -t nat -A POSTROUTING -s 0.0.0.0/24 -o eth0 -j MASQUERADEservice iptables saveecho 1 > / ...

  9. 布线问题(prime)

    布线问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件:1.把所有 ...

  10. dataset 用法(2)

    1.为DataTable添加列 (1)添加列 DataTable  tbl = ds.Tables.Add("User"); DataColumn col =tbl.Columns ...