通配符、通配符上限、通配符下限

本文深入探讨了Java中泛型的使用方法,包括通配符的基本概念、通配符的上限和下限,以及如何在实际代码中应用这些概念。通过具体的代码示例,读者可以更好地理解如何利用泛型提高代码的灵活性和复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通配符:List<?> 意思是未知类型元素的List
1
2
3
4
5
6
7
public void test(List<?> c)
{
    for(int i=0;i<c.size();i++)
    {
        System.out.println(c.get(i));
    }
}
通配符上限:List<? extends Shape>    代表Shape或Shape的子类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class RightTest
{
    static<T> void test(Collection<? extends T> from,Collection<T> to)
    {
        for(T ele:from)
        {
            to.add(ele);
        }
    }
    public static void main(String[] args)
    {
        List<Object> ao=new ArrayList<>();
        List<String> as=new ArrayList<>();
        test(as,ao);
    }
}
通配符下限:List<? super Type>   表示Type本身或者Type的父类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package test;
 
import java.util.*;
 
public class TreeSetTest {
    public static void main(String[] args)
    {
        TreeSet<String> ts1=new TreeSet<>(
                new Comparator<Object>()
                {
                    public int compare(Object fst,Object snd)
                    {
                        return fst.hashCode()>snd.hashCode()? 1
                                :fst.hashCode()<snd.hashCode()? -1:0;
                    }
                });
        ts1.add("hello");
        ts1.add("dao");
        TreeSet<String> ts2=new TreeSet<>(
                new Comparator<String>()
                {
                    public int compare(String first,String second)
                    {
                        return first.length()>second.length()? -1
                                :first.length()<second.length()? 1:0;
                    }
                });
        ts2.add("hello");
        ts2.add("dao");
        System.out.println(ts1);
        System.out.println(ts2);
    }
}
因为TreeSet(Comparator<? super E> c)
可以传入String或者String的父类Object
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值