java通配符

java通配符怎么表示?

答:<?> 在<>中写?就表示通配符。

什么是java通配符?

通配符:通配任意一种泛型类型。它是在泛型的基础上存在的。

通配符的优点:是方法更加通用。

什么时候用通配符?在定义属性或者定义方法的时候。并不是在实例化属性的时候。

class Generics<T> {
    private T t;

    public T getT() {
        return t;
    }

    public void setT(T t) {
        this.t = t;
    }
}

public class Test {
    //使用泛型定义方法
    private static <T> void print(Generics<T> generics){
        System.out.println(generics.getT());
    }
    //使用通配符定义的方法
    private static  void println(Generics<?> generics){
        System.out.println(generics.getT());
    }

    public static void main(String[] args){
        /*
        Generics<?> gen;//定义的时候使用通配符
        gen = new Generics<String>();//实例化的时候,必须明确类型,因为要告诉编译器,在内存中给对象分配地址了
         */
        Generics<String>  gen = new Generics<String>();
        gen.setT("abc");
        Generics<Integer>  gen2 = new Generics<Integer>();
        gen2.setT(123);
        //测试2个方法
        print(gen);
        println(gen2);
    }}

下面来说说通配符的上边界,下边界,无边界。

定义2各类:

public class Man implements Person {
    @Override
    public void eat() {

    }
}

public interface Person {
   void eat();
}

来看2个方法:

public void per(List<? extends Person> list) {//上边界
    for (Person person : list) {
        person.eat();
    }
}
public void man(){
    List<? super Man> sList = null;//下边界
    sList = new ArrayList<Person>();
}

在java泛型中,我们最常用的   ? 表示通配符,代表未知类型,无边界;

< ? extends Object>表示上边界限定通配符;

< ? super Object>表示下边界限定通配符。

欢迎关注我的微信公众号:


猜你喜欢

转载自blog.csdn.net/jinshitou2012/article/details/80250961