加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 传递给方法的无界通配符

发布时间:2020-12-15 08:44:22 所属栏目:Java 来源:网络整理
导读:public class ColTest {staticT T wildSub(ArrayList? extends T holder,T arg){ T t=holder.get(0); return t; } public static void main(String[] args) { ArrayList? list=new ArrayListLong(Arrays.asList(2L,3L,7L)); Long lng=1L; ColTest.wildSub(li
public class ColTest {
static<T> T wildSub(ArrayList<? extends T> holder,T arg){
        T t=holder.get(0);
        return t;
    }

    public static void main(String[] args) {
        ArrayList<?> list=new ArrayList<Long>(Arrays.asList(2L,3L,7L));
        Long lng=1L;
        ColTest.wildSub(list,lng);
    }
}

真的很感兴趣为什么这个片段是合法的,因为wildSub的签名只接受T的ArrayList或从T派生,并且类型为T的arg.但是<?>意味着 – 一些特定的类型,未知,以及它如何满足编译器?在所有类型<?>之后并不意味着<?延伸长> ...

解决方法

这是由于捕获转换.在内部,编译器转换表达式Foo<?>的类型.到Foo< X>,其中X是特定的虽然未知类型.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读