一、限制泛型可用类型
在定义泛型类别时,默认在实例化泛型类的时候可以使用任何类型,但是如果想要限制使用泛型类型时,只能用某个特定类型或者是其子类型才能实例化该类型时,可以在定义类型时,使用extends关键字指定这个类型必须是继承某个类,或者实现某个接口
当没有指定泛型继承的类型或接口时,默认使用extends Objext,所以默认情况下任何类型都可以做为参数传入
二、代码理解
限制类型
class Cls1{ //限制类型
T a;
public Cls1(T a){
this.a = a;
}
public T getData(){
return a;
}
}
public class Test {
public static void main(String[] args) {
Cls1<String> c = new Cls1<String>("wei"); //只能是String类型
c.getData();
}
}
限制类
class Animal{
}
class Dog extends Animal{
}
class Cls1{
T a;
public Cls1(T a){
this.a = a;
}
public T getData(){
return a;
}
}
public class Test {
public static void main(String[] args) {
Cls1<Dog> c = new Cls1<Dog>(new Dog());
c.getData();
}
}
限制接口
interface Move{
abstract void test();
}
class A implements Move{
public void test() {
// TODO Auto-generated method stub
}
}
class Cls1{ //这里是extends不能使用implements
T a;
public Cls1(T a){
this.a = a;
}
public T getData(){
return a;
}
}
public class Test {
public static void main(String[] args) {
Cls1<Dog> c = new Cls1<Dog>(new Dog());
c.getData();
}
}