javaSE.走进泛型. 泛型类
为了统计学生成绩,要求设计一个Score对象,包括课程名称、课程号、课程成绩,但是成绩分为两种,一种是以优秀、良好、合格来作为结果,还有一种就是60.0,75.5,92.5这样的数字分数,可能高等数学这门课是以数字成绩进行结算,而计算机网络实验这门课是以等级进行结算,这两种分数类型都有可能出现,那么现在改如何去设计这样的一个Score类呢?
现在问题就是,成绩可能是String类型,也可能是Integer类型,如何才能很好的去存可能出现的两种类型呢?
Object是所有类的父类,既可以存Integer也可以存String
但是Object类型在编译阶段并不具有良好的类型判断能力👇
无法明确具体是哪个类型的,无法强制转换为原本类型,需要提前进行类型判断
为了解决上述问题,泛型👇👇👇
自动替换String类型👇
静态方法中不能使用泛型,因为是具体使用对象时才会明确具体类型👇
我们在方法中使用待确定类型变量时,此时并不确定具体是什么类型,那么默认这个变量是要给Object 类型的变量,因为无论具体类型是什么,一定是Object类的子类。可以强转但没多大必要。
因为泛型本身就是对某些待定类型简单处理,如果都明确了要使用什么类型了,那大可不必使用泛型。
还有不能通过这个不确定的类型变量就去创建对象和对应的数组👇
具体类型的不同的泛型类变量,不能使用不同的变量进行接收👇
如果要让某个变量支持引用确定了任意类型的泛型,那么可以使用通配符 ‘ ?’ 👇
但是,如果使用通配符 ‘ ?’,由于类型不确定,所以说具体类型同样会变成Object 👆
泛型变量可以定义多个 👇
public class Test<A,B,C> { }
泛型仅支持引用类型 Integer等,不支持基本数据类型 例如 int。
数组本身也是引用类型,是可以使用的。