java中的泛型

泛型

为了考虑到代码的复用,如果不使用泛型,之前写的方法都只适合某一种数据类型,如果更换了数据类型,只能重新完成对应数据类型的功能代码。有可能出先格式各样的理数据类型,造成工作的重复
泛型的格式
格式
<自定义泛型无意义大写字母占位符>

泛型可以在方法中使用
泛型可以在类中使用
泛型可以在接口中使用
泛型可以在方法中使用

使用静态方法举例说明泛型在方法中的使用格式
格式:
public static 返回值类型[自定义泛型] 方法名(必须存在一个对应泛型的参数) {
方法体内可以使用自定义泛型
}

使用注意事项:
1. 自定义泛型声明在返回值之前,已保证方法的参数和返回值都可以使用对应的泛型
2. 方法声明的泛型,在方法的参数中必须有一个参数是对应声明的自定义泛型。当前参数是用于约束方法内所有使用到泛型的位置对应的具体数据类型是什么。
泛型可以在类中使用 [有一些难点]

格式:
class 类名<自定义泛型无意义大写字母占位符> {
在类内的成员变量和成员方法都可以使用自定义泛型
建议: 成员变量不建议使用自定义泛型
}
使用注意事项:
1. 类声明自定义泛型,需要通过创建对象的方式来约束
TypeA typeA = new TypeA(); Eclipse标准写法
TypeA typeA = new TypeA<>(); IDEA写法
2. 类声明泛型约束之后,在类内的所有成员方法中使用的泛型都是类约束的泛型具体数据类型
3. 如果没有约束类声明泛型,所有使用到泛型的位置都是Object,【不推荐】
4. 类声明的自定义泛型不能用于类内的静态方法【没有对象】

泛型可以在接口中使用

接口
interface 接口名 {
成员变量缺省属性:
public static final 定义时必须初始化,并且初始化之后无法修改
成员方法缺省属性:
public abstract 方法没有方法体
有方法体如何使用:
default修饰默认方法,非强制实现方法
}

泛型在接口中使用格式
interface 接口名<自定义泛型无意义占位符> {
问题: 接口的泛型是否可以用于成员变量中
T t
定义时必须初始化,但是当前泛型的数据类型是不明确的,无法进行初
始化过程。和final有关。
接口中的泛型有且只能用于成员方法!
}

使用注意事项:
1. 接口声明的泛型,有且只能用于类内的成员方法。
问题: default修饰的方法是否可以使用接口声明的自定义泛型
2. 遵从带有自定义泛型的接口的类,一种可以遵从过程中明确告知泛型具体类型,一种是在创建类对象是明确泛型具体数据类型。
3. class TypeA implements A
正确
接口的泛型明确接口中的方法,使用泛型对应的具体数据类型
类声明的泛型用于自定义约束自己类内的方法
4. class TypeA implements A
错误
接口中的泛型没有明确数据类型,也无法通过类创建对象的过程中明确
泛型对应的具体数据类型,无法编译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值