本来只转载了个链接,和一个简单的使用程序,但昨天不小心看到有人批判jdk1.5,先说java要强制转型不好的问题没解决,
容器不能放基类型不好,接着说泛型没用。而恰恰Jdk1.5中解决了这些问题,所以感叹之余,把这篇文章改一下,详细的说说泛型。
一,Java中的泛型:
在Java中能使用到泛型的多是容器类,如各种list map set,因为Java是单根继承,所以容器里边可以放的
内容是任何Object,所以从意义上讲原本的设计才是泛型。但用过Java的人是否感觉每次转型很麻烦呢?
而且会有些错误,比如一个容器内放入了异质对象,强制转型的时候会出现cast异常。而这中错误在编译器是
无从发现的。所以jdk1.5中提供了泛型,这个泛型其实是向c++靠拢了.好,我们先看几个实例再细说原理。
二,泛型的用法:(多个实例)
1
实例A
2
ArrayList < String > strList = new ArrayList < String > ();
3
strList.add( " 1 " );
4
strList.add( " 2 " );
5
strList.add( " 3 " );
6
// 关键点(1) 注意下边这行,没有强制转型
7
String str = strList.get( 1 );
8
// 关键点(2)然後我们加入,这个时候你会发现编译器报错,错误在编译器被发现,错误当然是发现的越早越好
9
strList.add( new Object());
实例A2
ArrayList < String > strList = new ArrayList < String > ();3
strList.add( " 1 " );4
strList.add( " 2 " );5
strList.add( " 3 " );6
// 关键点(1) 注意下边这行,没有强制转型 7
String str = strList.get( 1 );8
// 关键点(2)然後我们加入,这个时候你会发现编译器报错,错误在编译器被发现,错误当然是发现的越早越好 9
strList.add( new Object()); 1
实例B
2
ArrayList < Integer > iList = new ArrayList < Integer > ();
3
// 关键点(3) 注意直接把整数放入了集合中,而没有用Integer包裹
4
iList.add( 1 );
5
iList.add( 2 );
6
iList.add( 3 );
7
// 关键点(4)同样直接取出就是int
8
int num = iList.get( 1 );
实例B2
ArrayList < Integer > iList = new ArrayList < Integer > ();3
// 关键点(3) 注意直接把整数放入了集合中,而没有用Integer包裹 4
iList.add( 1 );5
iList.add( 2 );6
iList.add( 3 );7
// 关键点(4)同样直接取出就是int 8
int num = iList.get( 1 ); 1
实例C
2
// 关键点(5)展示一下key-value的时候要怎么写,同时key和value也可以是基本类型了。
3
HashMap < Integer,Integer > map =
实例C2
// 关键点(5)展示一下key-value的时候要怎么写,同时key和value也可以是基本类型了。 3
HashMap < Integer,Integer > map =

