
正文
Java 泛型约束
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
类型约束:
import java.util.List;
import java.util.ArrayList;
import java.util.LinkedList;/**
* Created by Administrator on 2016/12/30 0030.
*/
public class ListGenericFoo<T extends List>
{
private T[] fooArray; public T[] getFooArray()
{
return fooArray;
} public void setFooArray(T[] fooArray)
{
this.fooArray = fooArray;
} public static void main(String[] args)
{
ListGenericFoo<LinkedList> foo1 = new ListGenericFoo<LinkedList>();
ListGenericFoo<ArrayList> foo2 = new ListGenericFoo<ArrayList>(); LinkedList[] linkedLists = new LinkedList[10];
foo1.setFooArray(linkedLists); ArrayList[] arrayLists = new ArrayList[10];
foo2.setFooArray(arrayLists); }
}
继承接口或者类,都用extends关键字
限制类型
ArrayList<? extends List> list=null;
list=new ArrayList<LinkedList>();
list=new ArrayList<ArrayList>();
ArrayList中的泛型必须继承是List(当然这里List是接口,不可能,但是类型可以)或者List的子类
ArrayList<? super ArrayList> list=null;
list=new ArrayList<Object>();
list=new ArrayList<ArrayList>();
使用super关键字,泛型必须是继承的类型的自己或者其父类。
类型限定在泛型类、泛型接口和泛型方法中都可以使用,不过要注意下面几点:
1、不管该限定是类还是接口,统一都使用关键字 extends
2、可以使用&符号给出多个限定,比如
public static <T extends Comparable&Serializable> T get(T t1,T t2)
3、如果限定既有接口也有类,那么类必须只有一个,并且放在首位置
public static <T extends Object&Comparable&Serializable> T get(T t1,T t2)
http://www.cnblogs.com/mengdd/archive/2013/01/21/2869861.html
http://blog.csdn.net/lonelyroamer/article/details/7864531
http://blog.csdn.net/aminfo/article/details/7909823






