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

Java基础-泛型的应用(类、接口、参数、返回值、继承、通配符)

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

Java基础-泛型的应用(类、接口、参数、返回值、继承、通配符)

Java基础-泛型的应用(类、接口、参数、返回值、继承、通配符)

1.位置与作用2.类 泛型3.参数与返回值 泛型4.父子类 泛型5.接口与实现 泛型6.通配符(?、extends、super)7.注意《上一篇:Object对象》《下一篇:Java异常处理》《目录:Java基础》《幕》

1.位置与作用

1.类2.接口3.参数类型4.方法返回值作用
1.可以在编译期间检查错误
2.降低运行时产生 ClassCastException 异常的概率(如:动态自定义泛型转换)
3.实现声明类型限制,使代码更加 规范、易读、健壮注意:
运行时就不会产生 ClassCastException异常,这句话并不准确
请看 4.参数指明泛型中的异常

2.类 泛型

类中的泛型,可以只有1个,可以存在多个(用逗号分隔)自定义的任意字母都可以,T只是一个代号(表示Type的意思)

3.参数与返回值 泛型

根据参数类型传递的泛型,返回对应类型的返回值注意:如果方法内部无法处理类型转换,仍然会出现 ClassCastException异常

4.父子类 泛型

对于父类中存在泛型,子类继承父类已知:父类class Father {},则存在以下四种情况

//1.全部保留
class son1 extends Father {
}

//2.1.部分保留、部分变更
class son2_1 extends Father {
}

//2.2.部分保留、部分变更
class son2_2 extends Father {
}

//3.全部变更
class son3 extends Father {
}

//4.擦除
class son4 extends Father {
}
5.接口与实现 泛型

对于接口中存在泛型,实现类应满足如下情况已知:接口interface TestInterFace {,则存在以下四种情况

package com.abl.javabasis._08_generics;

public interface TestInterFace {
}

//全部保留
class Impl_1 implements TestInterFace {
}

//部分保留、部分变更
class Impl_2_1 implements TestInterFace {
}

//部分保留、部分变更
class Impl_2_2 implements TestInterFace {
}

//全部变更
class Impl_3 implements TestInterFace {
}

//擦除
class Impl_4 implements TestInterFace {
}

6.通配符(?、extends、super)

如下方代码所示:

通配符的限制 : 没有任何类型限制,任意对象都可 : 继承,限制为 Number或Number的子类(接口和实现类也是这个关系) : 向上,限制为 Number或Number的父类

如下方代码所示:

1.不能用在泛型方法声明上,返回值类型前面<>不能使用?2.不能用在泛型类的声明上3.不能用在创建对象上,右边属于创建集合对象

package com.abl.javabasis._08_generics;

import java.util.HashSet;

//1:不能用在泛型方法声明上,返回值类型前面<>不能使用?
//public static <错误> void test(ArrayList list){}
//2:不能用在泛型类的声明上
//class Test<错误>{}
//3:不能用在创建对象上,右边属于创建集合对象
//ArrayList list2 = new ArrayList<错误>();
public class TestWildcard {

    // ? extends 继承,限制为 Number或Number的子类
    void ltClass(HashSet param) {

    }

    //? super 向上,限制为 Number或Number的父类
    void gtClass(HashSet param) {

    }

    //? 没有任何限制,任意对象都可
    void objClass(HashSet p) {

    }

}
7.注意

1.可以声明多个泛型,多个泛型用逗号分隔 class Test1 { }2.泛型对构造器没有影响,只是类声明处加尖括号3.泛型不相同的两个对象(引用),不能相互赋值4.自定义泛型,默认继承 object 但是不等于 Object5.不可以使用基本数据类型,但是可以使用包装类型6.简化操作=号右边,new后面的泛型声明可以忽略 ArrayList strList = new ArrayList<>();7.类上的泛型,不能使用在静态变量和静态方法中
(错误示范 )

《上一篇:Object对象》

点击跳转

《下一篇:Java异常处理》

点击跳转

《目录:Java基础》

点击跳转

《幕》

留白 —<老吉> ~ 今 ~ ❀ ~ ❀❀❀❀❀❀❀❀❀❀ ❀❀❀❀❀❀❀❀❀❀ ❀❀❀❀❀❀❀


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/760035.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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