java学习4---枚举类型与泛型

本文探讨了枚举类型在常量封装中的应用及其优点,包括values和valueOf等方法的使用。此外,介绍了泛型的概念,如何定义泛型类,以及泛型在集合类中的应用。泛型提供了类型安全,减少了强制类型转换的风险。文章还涉及了泛型的限制、类型通配符以及泛型接口的继承。通过枚举和泛型,开发者可以实现更高效、安全的代码设计。
摘要由CSDN通过智能技术生成

枚举类型是将常量封装在类或接口中,本质上还是以类的形式存在。泛型可以减少代码量,还不会因为对象置于某个容器中而失去其类型。

1.枚举类型

①使用枚举类型设置常量

常量一般放在接口,便于使用,且在接口中使用final或static关键字修饰。

而泛型的出现逐渐取代了该方式,泛型定义常量语法:326bb514d2cc4774b16e6bc3fd92d081.jpg

 接口定义与泛型定义区别:94916c34f944467d8ae37ac12cd9294c.jpg

63714bb588a74cd59e0bb582288019a0.jpg定义一个枚举类型时,可以把每一个枚举类型成员都看作是枚举类型的一个实例,枚举类型的常用方法:

7de6d7f90b2f4bc99f82c8c8ef3d1b5a.jpg

 (i)values方法

将枚举类型成员(所有枚举值)以数组形式返回,如下:

5d63d83712ee4b55b32f48305097c843.jpg

 

(ii)valueOf方法与compareTo方法

valueOf()方法可以将普通字符串转换为枚举类型,而compareTo()方法可以用于比较两个枚举类型对象定义时的顺序。如下:

4918711fa01f45d68e263dd6ec6b2cb0.jpg

 (iii)ordinal()方法

用于获取某个枚举对象的位置索引值。

a131d917e30b4ad392320574ec0cb0c4.jpg

 (iv)枚举类型的构造方法

枚举类型的无参或者有参构造方法必须被private修饰,定义一个有参构造方法后需要对枚举类型成员使用该构造方法。如Constant("我是枚举常量"),Constant(2)可以相应的使用参数为String型和int型构造方法。然后可以在枚举类型中定义成员变量,在构造方法中为变量赋值,这样就可以在枚举类型中定义该成员变量的getXXX()方法。如下:

8f87aa1d26724e4b9a4a70553a76985b.jpg

 使用枚举类型的优点:类型安全,运行效率高,紧凑有效,完美交互。

训练:星期枚举

2.泛型

在某些强制类型转换的错误不会被编译器捕捉,(向上转型是安全的,向下转型操作时用错了类型,或者并没有执行该操作,就会出现异常)所以提供了泛型机制。

①定义泛型

类名<T>

其中T是泛型的名称,代表某一种类型,在创建该类对象时需要指定T所代表的具体类型,如果不指定具体类型,则采用Object型。

实例:8f3048cd4edc49878239799072b70c0d.jpg

a72626516162465eacd08f0bb46801ac.jpg②泛型的常规用法:

(i)定义泛型类时声明多个类型

class Myclass<T1,T2>

(ii)定义泛型类时声明数组类型

05589b6c57984d249f2273177e3f88a8.jpg

 但是不能使用泛型建立一个数组实例

(iii)集合类声明容器元素

集合接口,集合类都被定义了泛型,比如List<E>的泛型E,Map<K,V>的泛型K,V。

常见的被泛型化的集合有:

2b1628470a7848db8bc8579782f69653.jpg

 实例:f696d879649946009b70c57d4cf762d3.jpg

 ③泛型的高级用法:

(i)限制泛型可用类型

可对泛型类实例进行限制,语法如下:

class 类名称<T extends anyClass>

anyClass是指某个接口或类。

使用泛型限制后,泛型类的类型必须继承或实现这个接口或者类。

b8dbe340410e487691e36a036910d672.jpg

 (ii)使用类型通配符

主要作用:创建一个泛型类对象时限制这个泛型类的类型实现或者继承某个接口或类。声明一个这样的对象可以用"?"通配符表示,同时用extends对泛型类型限制。语法如下:

泛型类名称<? extends List> a=null;

其中<? extends List>表示类型未知,当需要使用该泛型对象时,可以单独实例化

8f47427627fe4d7c99c8bc83de392735.jpg

 e348b9da71e84e8888d528ccf73e204d.jpg

 (iii)继承泛型类或实现泛型接口

89d87d1958be4193aeb162169e211f01.jpg

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ustinian.488

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值