枚举与泛型

序言:
a.接口中的变量都是静态常量,无论是否写全,且必须都为public形式(即public static final,不写全默认为此)
b.接口中的方法都是默认由public abstract修饰的抽象方法,不写也是此修饰;
c.由于a属性,故常量一般在接口中定义;
ps:不遵循ac条件,编译报错;
接口中不能有构造方法
一、枚举:
1、什么是枚举?
枚举是常量定义的一种方式;
ps:被final修饰的变量就是常量;
常量与变量的区别:https://blog.csdn.net/qq_36959774/article/details/88321229
2、枚举的好处?
(1)参数类型检测
例如: a变量为常量,EnumA.b为枚举
static final int a = 10;
void c (int d){
switch (d) {
case a:
syso(“a”)
}
} // 若要输入a但是其输入了int类型的其他值,只有在运行时才会检测出来,
void e (EnumA f){
switch (f) {
case f:
syso(“f”)
}
}// 若输入了其他类型(非枚举类型EnumA),就会编译报错;
(2)丰富的方法;
values():通过 “类名.values()” 的形式,将枚举全部返回;
valueOf();通过 “类名.valueOf(“字符串”)” 的形式,将字符串转换为枚举(若枚举中无此字符串会报错)
compareTo():通过"枚举.compareTo(“枚举”)",比较俩个枚举对象是否相等;
ordinal():通过"枚举.ordinal()"的方式,返回该枚举的索引;
3、枚举的分类?
枚举有俩中定义方式
a. public enum EnumA { //默认会有无参的构造函数,且若输出枚举,则会输出枚举的名称(例如输出如下枚举则会输出COM1,COM2,COM3)
COM1, COM2, COM3
}
b. public enum EnumA { // 枚举若有值,则需定义其有参的构造函数,并为其赋值,且必须为私有,参数也可以多个
COM1(“枚举A”), COM2, COM3;
private String des;
private EnumA(){}
private EnumA(String des){
this.des = des;
}
}
4、枚举的特点
(1)构造函数必须为私有的;
(2)若参数为有参则需为其定义构造函数并为其赋值;
二:泛型
1、什么是泛型?
泛型就是为了解决类型转换的问题(从上到下):及大类型到小类型的转换;
有些时候虽然我们可以强制转换,虽然编译期未报错,但是在运行期间,可能会报错;
2、泛型的使用?
(1)定义:类名A<T1,T2,T3…>, 然后为其建造get与set方法;
(2)使用:实例化:类名A<具体类型A,具体类型B,…> a = new 类名A<具体类型A,具体类型B,…>();
(3)赋值,取值:用set赋值、用get方法取值
3、泛型的特点?
(1)不可以使用泛型来建立数组的实例(编译报错);
(2)集合框架已经被泛型话了(例如Map<K,V>);
(3)可以使用extends关键字限制泛型的类型(向下限制)
通过使用 类名称A // 即T必须使anyClass的子类型 也成向下限制;
(4)可以使用 super关键字限制泛型的类型(向上限制)
通过使用 类名称A // 即T必须是AnyClass的父类型;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值