码迷,mamicode.com
首页 > 编程语言 > 详细

Java之通配符

时间:2019-12-14 23:15:17      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:strong   @param   接收   是什么   表示   extend   参数   param   不能   

1、 通配符

不确定集合中的元素具体的数据类型
使用?表示所有类型

格式:

public void test(List<?> list){
    System.out.println(list);
}

2、 有限制的通配符

public class Test2 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        Dd d = new Dd();
        d.test(list);
        
        List<D1> ld = new ArrayList<D1>();
        d.test1(ld);
        List<A1> la = new ArrayList<A1>();
//      d.test1(la);//不能传A1对象类型,只能传C1及其子类
        
//      d.test2(ld);//不能传D1对象类型,只能传C1及其父类
        
        //接口
        List<Ee> le = new ArrayList<Ee>();
        d.test3(le);
    }
}

class Dd{
    /**
     * 不确定集合中的元素具体的数据类型
     * 使用?表示所有类型
     * @param list
     */
    public void test(List<?>list) {}//test方法需要一个list集合的参数,不确定list集合到底是存的数据的类型是什么?用?
    public void test1(List<? extends C1> list) {}//? extends C1 只允许接收C1或C1的子类
    public void test2(List<? super C1> list) {}//? super C1 只允许接收C1或C1的父类
    public void test3(List<? extends E1> list) {}//? extends E1 只允许接收接口E1的实现类
}

class A1{}
class B3 extends A1{}
class C1 extends B3{}
class D1 extends C1{}
//接口
interface E1{}
class Ee implements E1{}

Java之通配符

标签:strong   @param   接收   是什么   表示   extend   参数   param   不能   

原文地址:https://www.cnblogs.com/istart/p/12041129.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!