Java培训入门课程之泛型必备知识点汇总
经过了千锋郑州Java培训第一阶段的学习,我对Java有了一定程度的了解。最近学习的泛型也是学习的重难点,接下来我就简单总结相关知识点,以便加深印象。
泛型的基本作用
1.约束在集合中保存的数据类型
2.避免代码中没有必要的强制类型转换
泛型在方法中使用
当前方法使用了自定义泛型T,这里在调用方法时,会根据传入的参数类型来约束泛型的具体对应类型
格式:
public static 返回值类型[可以使用泛型] 方法名(形式参数列表必须使用泛型) {
// 可以使用
}
泛型在类中的使用
泛型在类中使用的注意事项:
1. 在类名声明的一个自定义泛型占位符,是通过【创建对象】来约束对应的具体数据类型,并且会影响到在类内所有使用到自定义泛型的【非静态成员方法】。
2. 如果在创建当类对象时没有约束自定义泛型对应具体数据类型,那么所有类内使用到该自定义泛型的【非静态成员】都是对应Object类型。
3. 为什么静态方法不能使用类名上声明的泛型?
类声明的泛型,对应具体数据类型,是通过创建对象来进行约束的。但是static修饰的静态成员方法是在类文件加载,是已经存在于内存,此时并没有存在类对象,无法对泛型进行数据类型约束。JVM无法确定泛型的具体类型,所以无法使用。
4. 静态成员方法使用自定义泛型,可以自娱自乐,自己声明。这里建议,在静态成员方法使用的泛型名字不要和类名声明的一致,虽然没有语法错误,但是会导致代码阅读性比较差。
格式:
class 类名<无意义自定义泛型占位符,一个大写的英文字母> {
// 在类内的非静态成员方法可以使用自定义泛型
public E getType(E e) {
return e;
}
//静态成员方法需要重新定义,不在通过创建类对象约束数据类型,而是和泛型在方法中约束一样通过传入参数的数据类型来约束泛型。
public static T testStatic(T t) {
return t;
}
}
泛型在接口中的使用
接口可以看做是一个特殊的类,用interface、implements不能使用class进行声明。接口中的方法声明、实现类声明要一致。接口中的泛型也是通过创建类对象来进行约束,所以不能使用静态成员。
格式:
interface 接口名<自定义泛型占位符> {
// 接口内的成员变量,能不能使用自定义泛型?
接口中的成员变量不能是引用接口声明的自定义泛型,
1. 因为缺省属性中包含static,静态,无法确定数据类型
2. 无法确定数据类型,那么不能确定使用什么数据类型的数据进行初始化操作,因为存在final修饰
}
实现类有两种方式,遵从带有自定义泛型的接口
* 1.freedom
* 2.规规矩矩
* 在声明位置,声明了和接口一致的自定义泛型
class TestA<E> implements A<E>{
@Override
public E getE(E e) {
// TODO Auto-generated method stub
return e;
}
@Override
public void print(E e) {
System.out.println(e);
}
}
遵从接口,已经确定对应的具体数据类型是什么类型,从而该类实现接口中的方法
* 凡是使用到泛型的位置都是确定的数据类型。调用方法时和普通方法调用一样直接调用,不用再加泛型。
class TestB implements A<Integer> {
@Override
public Integer getE(Integer e) {
return e;
}
@Override
public void print(Integer e) {
System.out.println(e);
}
}
泛型在创建类对象时
eg:ArrayList<String> array = new Arraylist<String>;
在类中使用泛型,需要创建对象时来约束数据类型,也可以不约束ArrayList array = new ArrayList();则通过该类对象调用方法的数据类型是Object。
面对类中使用,在创建类对象时约束数据类型,从而约束类内数据类型。
面对接口中使用,在创建类对象时约束数据类型,从而约束接口实现类数据类型,实现类约束接口的数据类型。接口约束接口内的实现方法数据类型。从而约束实现类中的方法数据类型。
泛型的上下限
<? extends E>//上限
<? super E>//下限
综合来看,泛型的知识点其实并不难理解,重要的是能够在项目中进行运用,多敲代码才能够将泛型熟练掌握。
相关推荐HOT
更多>>大数据培训学习什么,你了解多少
大数据培训学习什么?你了解多少?随着互联网技术的不断发展,大数据技术开始走进人们的视野,并成为现阶段吃香的技术能力之一。那么熟练掌握大...详情>>
2023-03-16 15:16:01云计算培训怎么样?可靠吗
云计算培训怎么样?可靠吗?靠不靠谱要看你什么要求了,因人而异。但如果你是想通过培训机构快速掌握好技能,然后进入行业,这个一般都没有问题...详情>>
2023-03-07 14:51:00java编程工资多少?主要学哪些内容
java编程工资多少?主要学哪些内容?java程序员的月收入在6000-20000不等,在一线城市有工作经验的java程序员的薪资收入会高一些,在二三线城市...详情>>
2023-02-24 14:56:07it工程培训机构,云计算难学吗
下面给小伙伴们列举一个学习大纲参考: 第一阶段: 零基础入门 1、计算机基础 2、Raid设置与网络服务基础 3、网络基础 第...详情>>
2022-12-01 17:48:04