发布时间: 2011-9-20 来源:javacodegeeks.com 翻译:
gbin1.com
泛类型(Generics)是Java
SE5.0里的特性,在发布后的几年里,我相信每个java开发者都不仅仅听说过,而且实实在在的使用过。这里有很多的免费和付费资源可以用来学些泛类,如下:
尽管这里有很多的信息,但是很多程序员还是弄不清楚java泛类的使用。这就是为什么我这里总结了所以使用泛类所需要的基本知识。
泛类使用的初衷
最简单的方式来想象泛类是一种语法方式用来省去类型转换操作:
List<Apple> box = ...;
Apple apple = box.get(0);
以上代码很好解释,box是一个Apple对象的列表,我们使用get方法取出一个苹果的实例而不需要做强制类型转换。如果我们不使用泛类特性,那么我们将需要这样编码:
List box = ...;
Apple apple = (Apple)box.get(0);
毋庸置疑,泛类的主要优势是让编译器来跟踪参数类型,执行类型校验并且转换类型:编译器保证了转换的正确性。
替代程序员的人为类型跟踪和转换,编译器会负责帮助开发人员来强化类型检查及其编译时的错误验证,这样能够保证程序尽量少的出现运行环境错误和debug的成本。
泛类语法
泛类语法介绍了变量类型的概念。一个变量类型,根据Java的标准,是一个无限制条件的标示符并且由以下方式定义:
- 泛类类声明
- 泛类接口声明
- 泛类方法声明
- 泛类构造器声明
泛类型类和接口
一个类或者接口如何有一个或者多个类型变量那么他们就是泛类型类或者接口。类型变量在类名之后并且由尖括号分隔:
public interface List<T> extends Collection<T> {
...
}
简单来说,类型变量作为一个参数提供信息给编译器用来执行校验。
许多的Java类库里的类,例如Collections,都被修改成为泛类型。我们用来演示的代码中的List接口就是一个泛类型。在那个代码片段中
box是List<Apple>的参考,是一个使用类型变量Apple执行List接口的实例。类型变量是编译器用来调用get方法在执行自
动类型转换的类型定义。
实际上,新的泛类型签名或者List接口的get方法是:
T get(int index);
这个方法返回一个真正的T类型对象,T是类型变量指定在List<T>声明中。
泛类型方法和构造器
非常类似,如果我们声明一个或者多个类型变量的话,方法和构造器都可以被泛类型化。
public static <t> T getFirst(List<T> list)
这个方法将会接受一个参考到List<T>并且返回T类型的对象。
完整全文请查看原文。
原文来自: GBin1推荐教程之Java泛类型(Generics)快速入门
分享到:
相关推荐
作者:Chris Spooner翻译:Terry li – GBin1.com英文: jQuery Plugins for Styling Checkbox & Radio Buttons web开发中所有的输入控件中复选框和单选框的样式是最难去设计的,因为不同的浏览器及其操作系统对于...
HTML5 Boilerplate 是一个... 当然这里还有别的HTML5/CSS框架,你可以针对你具体需要使用 ,例如,wordpress上面的开发,参考这个文章: http://www.gbin1.com/technology/html/2011111010handyhtml5css3frameworks/
Bin2c.exe是一个可将bmp格式图片转换为C代码数组的工具.RAR 无毒无害 可以放心使用~~
titanium-d1-kickstart.6.1.1.gbin 强大的思科模拟器
1. 选择或者不选页面上全部复选框 var tog = false; // or true if they are checked on load $('a').click(function() { $("input[type=checkbox]").attr("checked",!...$('#XY').html("Gbin1 X Ax
VELDT的主要功能组件是:: FNC 引脚类型银行差分对ICE40UP-5K-SG48 IOB_0a DPIO 2个TRUE_of_IOB_1b 46 IOB_2a DPIO 2个TRUE_of_IOB_3b 47 IOB_3b_G6 DPIO / GBIN 2个COMP_of_IOB_2a 44 IOB_4a DPIO 2个TRUE_of_IOB...
gbin1</title> <meta charset=utf-8 /> [removed] </body> </html> 运行这个页面大家会看到一个坏掉的图。 第二部:是一个JavaScript,它的功能是:如果图片坏掉了,就弹出一个出错提示: ...
如果您有不一致之处,请尝试更早地同步和编译这2个依赖项。 安装 git checkout https://github.com/gbin/err-backend-tox.git pip install pytox 并添加: BACKEND = 'TOX' BOT_EXTRA_BACKEND_DIR = '/path_to/...
errbotSQL存储插件 关于 是一个python chatbot,此存储... BOT_EXTRA_STORAGE_PLUGINS_DIR = '/home/gbin/err-storage' STORAGE = 'SQL' STORAGE_CONFIG = { 'data_url' : 'postgresql://scott:tiger@localhost/tes
一个提供GContainerable和GChildable接口的小库,与GtkContainer和GtkWidget关系兼容。 提供了它们的基本实现(GContainer和GChild)和一个自定义实现(GBin),可用作基类和实现示例。