泛型(generic)是参数化类型的能力,其中可以在类、接口、方法中声明一个泛型类型。
我们来对比一下JDK 1.5前后对java.lang.Comparable接口的声明:
package java.lang;
public interface Comparable {
public int compareTo(Object o);
}
1.5前的版本
package java.lang;
public interface Comparable<T> {
public int compareTo(T o);
}
1.5后的版本
后面<T>表示的就是一个泛型类型,当我们要实现的时候可以根据实际情况代替T表示的类型,其中一个很典型的泛型类
ArrayList<T>的声明中,如果我们存入线性表的对象为字符串时,我们可以作以下的声明:
以下两句在编译过程中没有报错,在运行过程中报错了(对比的类型不匹配所致)
Comparable sample = new String();
System.out.println(sample.compareTo(1));
而以下两句在编译的过程中就报错了
Comparable<String> sample = new String();
System.out.println(sample.compareTo(1));
通过对比,可以看出声明为泛型的类,接口,方法等将会使程序的安全性加强。这是其主要优点之一。
我们可以为我们自己定义的类,接口或者方法声明为泛型,下面是演示的是一个声明为泛型的堆栈类
package pack21_1;
/**
*
* @author Administrator
*/
public class GenericStack<E> {
public final static int INITAL_SIZE=16;
//声明泛型数组
private E[] element;
//声明size
private int size;
//无参构造函数
public GenericStack ( ) {
this(INITAL_SIZE);
}
public GenericStack( int inital_size ) {
//这里要注意,泛型不能实例化,只能通过强制转换来得到
element = (E[])new Object[inital_size];
}
//实现push方法
public E push( E value ) {
//判断是否够空间
if(size>=element.length){
E[] newElement = (E[])new Object[2*element.length];
System.arraycopy(element, 0, newElement, 0, element.length);
element = newElement;
}
return element[size++]=value;
}
//实现pop方法
public E pop( ) {
return element[--size];
}
public int getSize( ) {
return size;
}
}
同时我们也可以声明泛型的接口和方法。
分享到:
相关推荐
泛型类、泛型方法、泛型接口、泛型委托 泛型类、泛型方法、泛型接口、泛型委托
泛型集合解释的非常好泛型集合泛型集合泛型集合解释的非常好泛型集合泛型集合泛型集合解释的非常好泛型集合泛型集合泛型集合解释的非常好泛型集合泛型集合
Struts2、Hibernate、Spring整合的泛型DAO (本人评价: 代码开发效率提高30% 代码出错率减少70%) 对于大多数开发人员,系统中的每个 DAO 编写几乎相同的代码到目前为止已经成为一种习惯。虽然所有人都将这种重复...
C#,泛型C#,泛型C#,泛型C#,泛型C#,泛型C#,泛型C#,泛型
【Flutter】Dart 泛型 ( 泛型类 | 泛型方法 | 特定类型约束的泛型 ) https://hanshuliang.blog.csdn.net/article/details/114059611 博客源码快照
C#的泛型C#的泛型
泛型学习和泛型接口和泛型经典示例
泛型和泛型集合类用法泛型和泛型集合类用法泛型和泛型集合类用法泛型和泛型集合类用法泛型和泛型集合类用法
在.NET FCL为我们提供了很多...结论:如果在C#2.0版本以上,尽量使用泛型集合类,而不使用非泛型集合类。因为,1. 泛型编程是从c#2.0开始才被.net支持的。2.泛型集合在性能和类型安全方面优于非泛型集 合。 。。。。
c#泛型类、泛型方法、泛型接口、泛型委托
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是...
Java泛型编程指南.pdf 此文章译自SUN的泛型编程指南
泛型的知识,请自己参考吧。主要介绍java泛型的知识。
C++/CLI泛型编程概览 CLI泛型介绍 CLI泛型适用对象 CLI泛型约束 CLI泛型与C++模板 讲座总结 Q&A
反射和泛型是一种重要的解决途径。 此代码是一个生成泛型对象的类。 比如: Pool<Point> pool = new Pool(){}; Point p = pool.get(x, y); //在此构造Point对象 ... pool.put(p); 希望能帮助那些为查找泛型构造器、...
详细的介绍了Java是伪泛型的原因,介绍了类型擦除的内容等。
Java Generics and Collections 英文版,详细描述java 泛型技术
C#泛型,非泛型实现枚举功能,通过实现接口方法或者使用迭代器块实现
讲述泛型及泛型的子类型、通配符
gson 解析泛型和将泛型转为json字符串