定义泛型接口
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定义泛型接口相关的知识,希望对你有一定的参考价值。
我想是你没表述清楚吧!是定义泛型接口吧!
定义泛型接口的好处:
a.减少了对对象进行装箱和拆箱所导致的性能成本,提高了效率。
b.赋予了代码更强的类型安全。
c.实现了更为灵活的代码复用。
其实就是泛型的好处了,如果不用泛型,那么就得用object了,这样有什么缺点呢?
1,如果对象是值类型,那么就有拆箱,装箱了,效率很低;
2,object,可读性很低,如果用泛型,我们可以直接看到对象是int,string或是char,可读性很强。
我就想到这两点了,其他的可以搜索下泛型的优点就是了。
JDK1.5之后的List接口,Iterator接口,Map接口的代码:
public interfaceList<E>
{
voidadd(E x);
Iterator<E> iterator();
}
public interfaceIterator<E>
{
E next();
Boolean hasNext();
}
Public interfaceMap<K,V>
{
Set<K> keyset();
V put(K key, V value);
}
上面三个接口声明比较简单,除了尖括号中的内容――这就是泛型的实质;允许在定义接口,类时指定类型形参,类型形参在整个接口,类体内中可当作类型使用,几乎所有可使用其他普通类型的地方都可以使用这种类型形参。
例如我们使用List类型时,为E形参传入String类型实参,则产生了一个新的类型: List<String>类型,我们可以把List<String>想像成E杯全部替换成String的特殊List子接口:
Public interfaceListString extends List
{
Voidadd(String x);
Iterator<String> iterator();
}
虽然程序只定义了一个List<E>接口,但实际使用时可以产生无数多个List接口,只要为E传入不同的类型实参,系统就会多出一个新的List子接口。
public class Apple<T> {
private T info;
public Apple(){}
public Apple(T info){
this.info =info;
}
public void setInfo(T info){
this.info =info;
}
public T getInfo(){
return this.info;
}
public static void main(String[] args){
Apple<String> a1 = new Apple<String>("Apple");
System.out.println(a1.getInfo());
Apple<Double> a2 = new Apple<Double>(2.00);
System.out.println(a2.getInfo());
}
}
Output:
Apple
2.0
上面定义了一个带泛型声明的Apple<T>类,实际使用时会为T形参传入实际类型。
以上是关于定义泛型接口的主要内容,如果未能解决你的问题,请参考以下文章
JAVA-初步认识-常用对象API(集合框架-泛型-泛型接口)