java 枚举的学习和使用,2024年最新安卓开发自学教程

实际上在第一行写枚举类实例的时候,默认是调用了构造器的,所以此处需要传入参数,因为没有显式申明无参构造器,只能调用有参数的构造器。

构造器需定义成私有的,这样就不能在别处申明此类的对象了。枚举类通常应该设计成不可变类,它的Field不应该被改变,这样会更安全,而且代码更加简洁。所以我们将Field用private final修饰。

3.2 枚举类遍历

枚举类型提供了两个有用的静态方法 values( ) 和 valueOf( ) 我们可以很方便的使用它们

例如:


 for(SeasonEnum s : SeasonEnum .values())

     System.out.println(s);

3.3 switch语句里的表达式可以是枚举值


package enumcase;

public class SeasonTest {

 public void judge(SeasonEnum s){

  switch(s){

      case SPRING:

        System.out.println("春天适合踏青。");

      break;

      case SUMMER:

        System.out.println("夏天要去游泳啦。");

      break;

      case FALL:

        System.out.println("秋天一定要去旅游哦。");

      break;

      case WINTER:

        System.out.println("冬天要是下雪就好啦。");

      break;

  }

 }

 

public static void main(String[] args) {

  SeasonEnum s = SeasonEnum.SPRING;

  SeasonTest test = new SeasonTest();

  test.judge(s);

  }

}

3.4 定义枚举类型时本质上就是定义一个类别,只不过很多细节由编译器帮我们完成了,所以某些程度上,enum关键字的作用 就像是class或interface

3.5 使用enum定义的枚举类默认继承了java.lang.Enum,而不是继承Object类

当我们使用“enum”定义枚举类型时,实质上我们定义出来的类型继承自java.lang.Enum类型,而枚举的成员其实就是我们定义的枚举类型的一个实例(Instance),他们都被预设为final,所以我们无法改变他们,他们也是static成员,所以我们可以通过类型名称直接使用他们,当然最重要的,他们都是公开的(public)。即,我们定义的每个枚举类型都继承自java.lang.Enum类,枚举中的每一个成员默认都是public static final 的。

而每个枚举的成员其实就是我们定义的枚举类型的一个实例(Instance)。换句话说,当定义了一个枚举类型后,在编译时刻就能确定该枚举类型有几个实例,分别是什么。在运行期间我们无法再使用该枚举类型创建新的实例了,这些实例在编译期间就已经完全确定下来了。 所以在:SeasonEnum currentSeason = SeasonEnum .SUMMER 中,没有new SeasonEnum ()。而是直接赋值

3.6 检查权限

如一个经理、员工、顾客对一个工具的使用权限,一般用枚举来处理 因为这样子可以用来控制传入判断的参数只能够是该枚举类型的数,从而限制传入的参数.


package Enum;



public class AccessControl {

    public static boolean checkRight(AccessRight access){

        if(access == AccessRight.MANAGER){

            return true;

        }

        else if(access == AccessRight.DEPARMENT){

           return false;

        }else {

          return false;

        }



    public static void main(String[] args) {

        System.out.println(checkRight(AccessRight.DEPARMENT));

    }

}



enum AccessRight{

MANAGER,DEPARMENT,EMPLOYEE;



通过这样,只能够传递AccessRight类型的参数,其他参数都是不合法的。

3.7 将String类型转换为枚举类型


static <T extends Enum<T>> T 

valueOf(Class<T> enumType, String name) 

返回带指定名称的指定枚举类型的枚举常量。

可以这样子使用 AccessRight access = AccessRight.valueOf(“MANAGER”);//只要AccessRight中有MANAGER的元素就可以返回这个元素,即将String类型转换为AccessRight类型

4.参考的网站

至此枚举学习了很多,对于网上的一些东西稍微整理,下面我是我借鉴的一些网站

https://www.douban.com/note/512891241/

http://blog.sina.com.cn/s/blog_4adc4b090101dtxp.html

http://blog.sina.com.cn/s/blog_697b968901013ih1.html

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

尾声

在我的博客上很多朋友都在给我留言,需要一些系统的面试高频题目。之前说过我的复习范围无非是个人技术博客还有整理的笔记,考虑到笔记是手写版不利于保存,所以打算重新整理并放到网上,时间原因这里先列出面试问题,题解详见:


展示学习笔记

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img
笔记**
[外链图片转存中…(img-11wO2QzE-1712789818922)]
[外链图片转存中…(img-IVaPKP3B-1712789818922)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-CB3bSv7K-1712789818923)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值