前情提要

最近也是面临着找工作的压力,所以重新复习下面试中的八股文,由于本人能力问题,可能对于个人觉得相对简单的问题,或者说不会的问题就不会进行记录,如果有想要学习或者说了解更多的只是的话,可以去up主的视频下进行观看学习,感谢大家的观看和讨论
up主地址:https://www.bilibili.com/vide...

正文

一、extends和super的作用?
答:<? extends T>:包括T在内的任何T的子类; <? super T>:包括T在内任何T的父类
二、泛型是如何进行限制的?
1.在泛型类中进行限制

public class YkList<E extends Number> {
    public void add(E e){
        //...
    }
}

public class Main {
    public static void main(String[] args) {
        //错误使用1
        //YkList<String> ykList = new YkList();
        //正确使用1
        YkList<Integer> ykList1 = new YkList<>();
        //正确使用2,这两种正确使用的区别我们在下面的2中讲
        YkList ykList2 = new YkList();
    }

}

2.在泛型方法中进行限制

public class Main {
    public static void main(String[] args) {
        //错误使用1
        //YkList<String> ykList = new YkList();
        //正确使用1,无法添加Float类型,add参数指定为Integer
        YkList<Integer> ykList1 = new YkList<>();
        ykList1.add(new Float("1"));
        //正确使用2,能添加Float类型,未指定add参数,只要是Number的子类的皆可
        YkList ykList2 = new YkList();
        ykList2.add(new Float("1"));
    }
}

三、如何理解java是假泛型


public class Main {
    public static void main(String[] args) {
        YkList<Integer> ykList1 = new YkList<>();
        YkList ykList2 = new YkList();
        /*返回值为true,表明运行时拿到的类都是ykList,泛型只是在编译的时候进行检查而已
        在java中类信息不含泛型的相关信息 */
        System.out.println(ykList1.getClass().equals(ykList2.getClass()));
    }
}

原来是小袁呐
1 声望0 粉丝