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. C++ Primer 读书笔记: 第8章 标准IO库

    第8章 标准IO库 8.1 面向对象的标准库 1. IO类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream所定义的类型则用于 ...

  2. ecshop开发日志之虚拟商品发送邮件通知

    购买虚拟商品,系统会在支付后自动发送邮件到用户填写的邮件地址中,追踪过程如下首先在订单列表中可以获得到处理订单的php文件为flow.php,之后在最后一步url地址显示为http://localho ...

  3. [转载]给10万pv的WordPress选择最便宜高可用的硬件以及WordPress高并发支持

    这些命令很长,但是希望可以让你很容易按照步骤创建一个全新的Linux服务器,使用Varnish, Nginx, W3 Total Cache, and WordPress来搭建一个WordPress博 ...

  4. android 自定义控件,自定义属性设置

    做listView的上拉下拉刷新,网上找了个历程.但是有些界面只有上拉刷新,有些界面是下拉刷新.觉得应该在xml里定义一个属性控制上下拉使能. 0.关于自定义控件: 自定义控件设计主要方式有:a) 继 ...

  5. php正则表达式图谱

    php 正则表达式分类图:

  6. Adobe Acrobat 9 Pro Extended 9.4简体中文完整免激活注册版

    Acrobat9 Pro最近升级比较频繁,如今已经升级到了Acrobat 9 Pro Extended 9.4版.亿品元素上曾经分享过Acrobat Pro Extended简体中文版 9.3.3 优 ...

  7. 一个大小为N的数组,里面是N个整数,怎样去除重复的数

    题目:一个大小为N的数组,里面是N个整数,怎样去除重复的数字: 要求时间复杂度为O(n),空间复杂度为O(1). 需要除掉重复的整数的数组,注意这里我没有处理负数情况,其实负数情况只要先用0快排分一下 ...

  8. Django里面的自定义tag和filter

    Django的文档里面有这么一句 The app that contains the custom tags must be in INSTALLED_APPS  in order for the { ...

  9. Data Visualization 课程 笔记1

    对数据可视化比较有兴趣,因此最近在看coursera上伊利诺伊大学香槟分校的数据可视化课程,做了一些笔记. 1. 定义 Data visualization is a high bandwidth c ...

  10. iOS 8.0正式公布啦

    从昨晚開始,苹果新版移动操作系统iOS 8.0開始提供免费下载服务.新版操作系统提供有数百个新功能,当中包含相机功能中添加了延时摄影模式,能够使用其它厂商开发的输入法.购买的App应用程序能够与最多6 ...