
Java枚举与泛型
文章平均质量分 64
iteye_19643
这个作者很懒,什么都没留下…
展开
-
实例183 - 自定义非泛型栈结构
心法领悟183:不用泛型的问题。为了获取适当的值,必须进行强制类型转换。因为在保存数据时使用了Object类型的数组,丢失了对象的实际类型。第二,没有进行错误检查。这意味着可以向该栈中存入任何类型的对象,如InputStream等。当转换成String时会在系统运行时报错。package com.mingrisoft.generic;public class Stack ...原创 2014-07-31 04:59:46 · 87 阅读 · 0 评论 -
实例181 - 遍历枚举接口的元素
心法领悟181:枚举接口的升级。随着Java的不断发展,新增加了一个Iterator接口,该接口不仅包括了枚举接口的功能,还增加了一个remove()方法。另外,该接口对方法的名字进行了优化:hasNext()用来测试是否有可用元素,next()用来获得元素。在新类中,推荐使用Iterator接口来实现遍历。package com.mingrisoft.enumerationtest;...原创 2014-08-12 06:34:11 · 96 阅读 · 0 评论 -
实例180 - 高效的枚举元素映射
心法领悟180:EnumMap类的应用。命令模式是23种常见模式之一,它是一种行为模式,可以使用EnumMap类来实现。首先将各种不同的命令保存在一个枚举类型中,再将这个枚举类型作为EnumMap的键。然后使用接口来统一命令所对应的操作,将其实现作为值存入到EnumMap中,这样就实现了命令模式。package com.mingrisoft.enummap;public enum...原创 2014-08-12 06:18:55 · 123 阅读 · 0 评论 -
实例179 - 高效的枚举元素组合
心法领悟179:of()方法的解读。通过查询EnumSet类的API文档,可以发现其不仅提供了固定参数的of()方法,还提供了可变参数的of()方法。如果在使用of()方法时,参数的个数小于等于5,则调用固定参数的of()方法;否则调用可变参数的of()方法。究其原因在于固定参数方法的效率要高于可变参数方法的效率。 技巧:可以使用静态导入来避免使用枚举类型引用枚举元素。(?) ...原创 2014-08-05 06:29:55 · 134 阅读 · 0 评论 -
实例178 - 选择合适的枚举元素
心法领悟178:枚举类型与switch语句。package com.mingrisoft.enums;public enum JDBCInfo { DRIVER, URL, USERNAME, PASSWORD; public String getJDBCInfo(JDBCInfo info) { switch (info) { ...原创 2014-08-05 06:22:02 · 76 阅读 · 0 评论 -
实例177 - 增加枚举元素的信息
心法领悟177:枚举类型中的方法在C语言中,枚举类型只能简单地定义一组变量。而在Java中,枚举类型还可以增加方法,这无疑增强了枚举类型的能力。本实例仅实现 了一个非常简单的方法,读者可以在本实例的基础上完成一些复杂的功能。另外,Java中的枚举类型还支持方法的重写。本实例的功能也可以通过重写toString()方法来实现,读者可以尝试完成。package com.mingrisoft....原创 2014-08-05 05:55:27 · 128 阅读 · 0 评论 -
实例176 - 枚举类型的基本特性
心法领悟176:枚举类型的优势。通过本实例可以发现,枚举类型在使用时是非常方便的。如果取名恰当,则其每个元素都很好理解。而且其取值的范围在定义枚举类型时就固定了,这样就避免了没有枚举类型前的很多问题。Java中的枚举类型还可以定义方法、重写方法、实现接口等,比起其他语言优势明显。package com.mingrisoft.enums;public enum Size { ...原创 2014-08-04 06:37:22 · 103 阅读 · 0 评论 -
实例175 - 枚举使用的简介
心法领悟175:“隐藏”方法的分析Java中并不是所有方法都在API中有说明,如有编译器增加的方法(以及private的方法)。如果使用IDE的提示功能,则可能遇到API中没有的方法。此时正是反射机制大显身手的时候,读者可以参考本实例自己编写一个工具类类分析“隐藏”方法。package com.mingrisoft.enums;public enum Position { ...原创 2014-08-04 06:22:00 · 76 阅读 · 0 评论 -
实例190 - 泛型化的折半查找法
折半查找法的平均时间复杂度是log2n。心法领悟190:泛型在数据结构中的应用。在学习数据结构的过程中,为了理解方便和简化编程,通常都使用整数作为分析的对象。利用Java的泛型机制,只需要将int替换成泛型类型T就可以实现更加通用的算法。这样就不需要再对不同的数据类型编写不同的算法实现。提示:Java SE API (java.util.Arrays)中已经实现了优化了的折半查找算...原创 2014-08-04 06:04:50 · 134 阅读 · 0 评论 -
实例189 - 使用通配符增强泛型
泛型中使用 ?作为通配符。通配符的使用与普通的类型参数相似,如通配符可以利用 extends 关键字来设置取值上限,用 super 来设置取值下限。例如:<? extends Number> 表示Byte、Short、Integer、Float、Double等都符合这个类型参数。<? super Number> 表示该类型参数是 Number类的父类,如Obj...原创 2014-08-02 16:55:52 · 99 阅读 · 0 评论 -
实例186 - 泛型方法与数据查询
在Java中,不仅可以声明泛型类,也可以在普通类中声明泛型方法。声明泛型方法需要注意如下几点:使用<T>格式来表示 泛型类型参数,参数的个数可以不止一个类型参数列表要放在 访问权限修饰符、static和final之后类型参数列表要放在 返回值类型、方法名称、方法参数之前例如:public static <T> List<T> quer...原创 2014-08-02 16:31:03 · 117 阅读 · 0 评论 -
实例188 -泛型化接口与最大值
除了 泛型类 和 泛型方法,Java中还可以定义 泛型接口。在实现这个 泛型接口 时需要注意,实现类的泛型类型参数 要求与 接口的泛型类型参数 相匹配。例如在本实例中,接口的声明如下:public interface Maximum<T extends Comparable<T>>其实现类的声明如下:public class GenericCompa...原创 2014-08-01 06:40:32 · 100 阅读 · 0 评论 -
实例187 - 泛型化方法与最小值
心法领悟187:泛型类型参数的限定。限定有两种情况:小于某个范围大于某个范围本实例使用的是第一种。“范围”既可以是一个类,也可以是一个接口,还可以是类和接口的组合。对于组合的情况,需要将类放在第一位,并使用&进行分隔。 注意:当泛型参数类型被限制为接口的子类型时,也使用extends关键字。使用下面的语法将T限制为Comparable接口的实现类。&...原创 2014-08-01 06:18:54 · 110 阅读 · 0 评论 -
实例185 - 自定义泛型化数组类
心法领悟185:Java泛型的局限。Java泛型使用起来有很多的局限性,如不能使用基本类型作为其类型参数、不能抛出或捕获泛型类型的实例、不能直接使用泛型数组、不能实例化类型变量等。希望读者在使用泛型时多加注意。对于其中的某些不足,可以使用Java的反射机制进行弥补。虽然反射的效率不高,但是也只能忍受了。 package com.mingrisoft.generic;impor...原创 2014-07-31 06:16:20 · 259 阅读 · 0 评论 -
实例185 - 使用泛型实现栈结构
秘笈心法:泛型的优势。除了在使用栈中的元素时不需要进行强制类型转换外,还可以让程序在编译过程中进行类型检查。例如,在本实例中,首先限制了栈只能保存String类型的元素。如果向栈中保存其他类型的元素,则编译时会报错。泛型的魅力在于让程序有更好的可读性和安全性。package com.mingrisoft.generic;import java.util.LinkedList;...原创 2014-07-31 05:34:00 · 149 阅读 · 0 评论 -
实例183 - 简单的文件合并工具
SequenceInputStream类可以用来接收元素类型为输入流的枚举接口类型。本实例将使用它制作一个文件合并工具,可以使用该工具合并文本文件、音频文件、视频文件等。心法领悟182:文件合并程序的增强。读者可以在本实例的基础上修改表格控件、增加排序功能,并根据排序的结果来创建SequenceInputStream类的对象。可以让文件选择器支持选择文件夹,利用文件的扩展名不同将需...原创 2014-08-13 05:54:59 · 121 阅读 · 0 评论