栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java泛型】泛型的使用限制、基本类型不能作为类型参数、不能创建类型参数的实例、不能用类型参数定义静态变量、泛型类型的类型参数不能用在静态方法上、类型参数不能跟instanceof一起使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java泛型】泛型的使用限制、基本类型不能作为类型参数、不能创建类型参数的实例、不能用类型参数定义静态变量、泛型类型的类型参数不能用在静态方法上、类型参数不能跟instanceof一起使用

七、泛型 泛型的使用限制

这里列出一些常用的误区,不必死记,过一遍理解即可

基本类型不能作为类型参数

//error
Map map1 = new HashMap<>(); 
//ok
Map map2 = new HashMap<>();

不能创建类型参数的实例

public class Box {
    public void add(Class cls) throws Exception{
        //error
        E e1 = new E();
        //ok
        E e2 = cls.newInstance();
    }
}

不能用类型参数定义静态变量

public class Box {
    //error
    private static E value;
}
Box box1 = new Box<>();
Box box2 = new Box<>();
//请问静态变量value是什么类型?Integer还是String?

泛型类型的类型参数不能用在静态方法上

public class Box {
    //error
    public static void show(E value){}
}

类型参数不能跟instanceof一起使用

ArrayList list = new ArrayList<>();
    //error
    if (list instanceof ArrayList){
}

不能创建带有类型参数的数组

//error
Box[] boxes1 = new Box[4];
//ok
Box[] boxes2 = new Box[4];

下面的方法不属于重载

//error
void test(Box box) {

}
void test(Box box){

}
//error
void foo(Box box) {

}
void foo(Box box){

}

不能定义泛型的异常类

//error
public class MyException extends Exception {

}

catch的异常类型不能用类型参数

public static  extends Exception {
    try {

    //error
    } catch (T e){}
}

下面代码是正确的

class Parser {
    //OK
    public void parse(File file) throws T {
        
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/754100.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号