2021.06.26

一道LinkedHashMap<>题目

class Person {
            public String name;

            @Override
            public boolean equals(Object o) {
                Person person = (Person) o;
                return name.equals(person.name);
            }

            @Override
            public int hashCode() {
                return name.length();
            }
        }

        LinkedHashMap<Person, String> personMap = new LinkedHashMap<>();

        Person person = new Person();

        person.name = "Jack";
        personMap.put(person, "Teacher");

        person.name = "Tom";
        personMap.put(person, "Lawyer");

        person.name = "Lily";
        personMap.put(person, "Student");

        for (Map.Entry<Person, String> entry : personMap.entrySet()) {
            Person k = entry.getKey();
            String v = entry.getValue();
            System.out.printf("%s is a %s\n", k.name, v);
        }
}

Lily Lawyer
Lily Student

一道泛型题目

        List<Integer> l1 = new ArrayList<>();
        List<Long> l2 = new ArrayList<>();

        Class<? extends List> l1Class = l1.getClass();
        Class<? extends List> l2Class = l2.getClass();

        System.out.println(l1.getClass() == l2.getClass());
    @Test
    public void test(){
        List<String> l1 = new ArrayList<>();
        ArrayList<Long> l2 = new ArrayList<>();

        Class<? extends List> l1Class = l1.getClass();
        Class<? extends ArrayList> l2Class = l2.getClass();

        System.out.println(l1.getClass() == l2.getClass());
        System.out.println(l1Class == l2Class);
    }

true true

    @Test
    public void test(){
        List<String> l1 = new ArrayList<>();
        List<Long> l2 = new ArrayList<>();

        Class<? extends List> l1Class = l1.getClass();
        Class<? extends List> l2Class = l2.getClass();

        System.out.println(l1.getClass() == l2.getClass());
        System.out.println(l1Class == l2Class);
    }

true true

    @Test
    public void test(){
        Set<String> l1 = new HashSet<>();
        List<Long> l2 = new ArrayList<>();

        Class<? extends Set> l1Class = l1.getClass();
        Class<? extends List> l2Class = l2.getClass();

        System.out.println(l1.getClass() == l2.getClass());
        System.out.println(l1Class == l2Class);
    }

false false

小结
泛型的 Class类 取决于声明的类,为 Class<? extend 声明的类>

    @Test
    public void test2(){

        AbstractList<String> list1 = null;
        List<String> list2 = null;
        ArrayList<String> list3 = null;

        list1 = list3;
        list2 = list3;

        List<String> list4 = new ArrayList<>();

    }

小结
泛型本类之间只有当泛型是一样的情况下才有继承关系,泛型间构成继承关系的不能用于继承,会出错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值