Java枚举与泛型

枚举介绍

继承java.lang.Enum
枚举类型可以取代常量的定义方式,即将常量封装在类或接口中。本质上还是类的形式。

  1. 单独定义枚举
    在这里插入图片描述
    使用方法: 枚举名.常量名
Constants.Constants_A;
  1. 类中定义枚举
    在这里插入图片描述
    这种内部类的形式,编译改类时,除了ConstantsTest.class类之外,还存在ConstantsTest $ 1.class和ConstantsTest $ Constants2.class 文件。

操作枚举类型成员的方法

每一个枚举类型成员都可以看作是枚举类型的一个实例,这些枚举类型成员都默认修饰为public、static、final
2. values()方法、valueOf()方法和compareTo()方法。
在这里插入图片描述
2. ordinal()方法。
在这里插入图片描述

枚举类型中的构造方法

枚举类型中,可以添加构造方法,但是这个构造方法必须为private修饰,防止客户代码实例化一个枚举对象。
在这里插入图片描述
在这里插入图片描述
注意: 枚举成员和构造方法有顺序的。
上述代码getDescription()、getI()方法重复,可以定义一个接口
在这里插入图片描述

枚举总结

  1. 类型安全
  2. 运行效率高
  3. 完美交互

@syl 2021/04/26 0:38 未知

泛型介绍

定义安全的类型,传参是也限制必须为某个类型的变量。

向上转型

在这里插入图片描述

定义泛型类

语法:类型< T >

在这里插入图片描述

泛型类声名多个类型

定义泛型类时,可以声名多个类型

	MutiOverClass<T1,T2>
	//MutiOverClass:泛型类名称
	//这样实例化就可以定义多个类型
	MutiOverClass<Boolean,Float> new MutiOverClass<Boolean,Float>;

泛型类声名数组类型

在这里插入图片描述
注意: 不可以使用泛型来建立数组的实例。

public class Test<T>{
	//private T[] array = new T[10];//不能使用泛型来建立数组的实例。
}

泛型类高级用法

限制泛型可用类型

class 类名称<T extends anyClass>

使用泛型限制后,泛型类的类型必须实现或继承了anyClass这个类或接口。
在这里插入图片描述

使用类型通配符

泛型类名称<? extends List> a = null;
List<String> l1 = new ArrayList<String>();
l1.add("A");	//在集合类添加内容
l1.set(0,"B");	//可以在集合类改变内容
List<?> l2 =l1;
l2.add("C");	//可以在集合类添加内容
//l2.set(0,"D");//使用?通配符不可以改变集合类的内容
List<?> l3 = new LinkedList<Integer>();

继承泛型类与实现泛型接口

在这里插入图片描述
在这里插入图片描述
SubClass类继承ExtendClass类时保留父类的泛型类型,需要在继承时指明,如果没有指明,直接使用extends ExtendClass语句进行继承操作,则SubClass类中的T1,T2,T3都会自动变为Object,一般情况下都将父类的泛型类型保留

泛型总结

  1. 泛型的类型参数只能是类类型,不可以是简单类型。
  2. 泛型的类型个数可以是多个。
  3. 可以使用extends关键字限制泛型的类型。
  4. 可以使用通配符限制泛型的类型。
    @syl 2021/04/26 15:37 阴 小雨
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值