Java新特性2 泛型
在我们开发中,经常会用到集合,我们也知道集合是用来存储元素的,但它却没有规范存储元素的具体类型,为了是我们的程序更规范化,就应当使用泛型了。
泛型是提供给javac编辑器使用的,可以限定集合中的输入类型,让编译器挡住源程序的非法输入,编辑器编译带类型说明的集合时会去除掉“类型”信息,是程序运行效率不受影响,对于参数化的泛型类型,getClass()方法的返回值和原始类型完全一样,由于编译生成的字节码会去掉泛型的类型信息,只要能跳过编译器,就可以往某个泛型集合中加入其他类型的数据,例如:用反射得到集合,在调用其add方法即可。
ArrayList<String> list1 = new ArrayList<String>();
ArrayList<Integer> list2= new ArrayList<Integer>();
System.out.println(list1.getClass() == list1.getClass());
打印true,就表示泛型只提供给编译器使用,运行期是不受影响,那我们想在list2中添加String类型的对象,如果我们直接add方法,编译器会报错。那我们怎么办?我们可以使用反射得到集合,然后调用其add方法就可以添加String类型的对象
list2.getClass().getMethod("add",
Object.class).invoke(list2, "abc");
System.out.println(collection3.get(0));
这样我们就在list2中添加了一个String类型的对象。
下面我们来简单了解一下泛型
l 术语,例如ArrayList<E>类定义和ArrayList<Integer>类定义
n 整个称为ArrayList<E>泛型类型
n ArrayList<E>中的E称为类型变量或类型参数
n 整个ArrayList<Integer>称为参数化的类型
n ArrayList<Ingerger>中的Integer称为类型参数的实例或实际类型参数
n ArrayList<Integer>中<>念着typeof
n ArrayList称为原始类型
l &nb
相关文档:
Java NIO API详解
在JDK
1.4以前,Java的IO操作集中在java.io这个包中,是基于流的阻塞(blocking)API。对于大多数应用来说,这样的API使用很方
便,然而,一些对性能要求较高的应用,尤其是服务端应用,往往需要一个更为有效的方式来处理IO。从JDK 1.4起,NIO
API作为一个基于缓冲区,并能提供非阻塞(non-blo ......
一:准备 www.savarese.org download
1. rocksaw-1.0.0-src.tar.gz
2. vserv-tcpip-0.9.2-src.tar.gz
二:编译源文件得到jar包 使用Ant
1. build vserv-tcpip-0.9.2-src
在vserv-tcpip-0.9.2目录下面建一个tests目录,然后在cmd窗口下进入 ......
1、语汇单元的组成:
1)经过分析产生的基本单元。在索引时,Lucene使用特定的分析器来处理需要被语汇单元化的指定域,并将每个语汇单元以项的形式写入索引。
2)起点偏移量是指语汇单元文本的起始字符在原广西中的位置,而终点的偏移量则表示语汇单元终止字符的下一个位置。
3)文本被语汇单元化后,相对于前一语汇单 ......
/* @author AnShuFeng
* @version 1.0
* 人人对战象棋
* XiangQi.java
*/
import java.awt.*;
import java.awt.event.*;
import javax.imageio.*;
import java.io.*;
import javax.swing.*;
import java.awt.image.*;
public class XiangQi
{
JFra ......
一、引言
1991年,Sun MicroSystem公司由James Gosling、Bill Joe等人组成的Green小组开发了
一个名为Oak的软件(Java的前身),目的是用于电视等家用电器的嵌入式应用。但后来,正如
我们现在所知道的那样,Java的发展却出乎它的开发者的预料,它并没有在嵌入式应用中大展
身手,但却风靡WWW世界。
如今,Java应用程序在Intern ......