• Java-枚举类型


    勤能补拙
    文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。

    在这里插入图片描述


    前言

    枚举类型可以取代以往常量的定义方式,即将常量封装在类或接口中,此外,它还提供了安全检查功能。枚举类型本质上还是以类的形式存在。泛型的出现不仅可以让程序员少写某些代码,主要的作用是解决类型安全问题,它提供编译时的安全检查,不会因为将对象置于某个容器中而失去其类型。

    一、枚举类型

    使用枚举类型可以取代以往定义常量的方式,同时枚举类型还赋予程序在编译时进行检查的功能。

    1、使用枚举类型设置常量

    以往设置常量,通常将常量放置在接口中,这样在程序中就可以直接使用,并且该常量不能被修改,因为在接口中定义常量时,该常量的修饰符为final与static。

    枚举类型出现后,逐渐取代了这种常量定义方式。使用枚举类型定义常量的语法如下:

    public enum Constants{
    	Constants_A,
    	Constants_B,
    	Constants_C
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、深入了解枚举类型

    1、操作枚举类型成员的方法
    枚举类型较传统定义常量的方式,除了具有参数类型检测的优势之外,还具有其他方面的优势。用户可以将一个枚举类型看作是一个类,它继承于java.lang.Enum类,当定义一个枚举类型时,每一个枚举类型成员都可以看作是枚举类型的一个实例,这些枚举类型成员都默认被final、public、static修饰,所以当使用枚举类型成员时直接使用枚举类型名称调用枚举类型成员即可。
    由于枚举类型对象继承于java.lang.Enum类,所以该类中一些操作枚举类型的方法都可以应用到枚举类型中。下表就是常用的枚举类型方法。

    方法名称具体含义使用方法举例
    values()该方法可以将枚举类型成员以数组的形式返回枚举类型名称.values()Constants2.values()
    valueOf()该方法可以实现将普通字符串转换为枚举实例枚举类型名称.valueOf(“abc”)Constants2.valueOf(“abc”)
    compareTo()该方法用于比较两个枚举对象在定义时的顺序枚举对象.compareTo()Constants_A.compareTo(Constants_B)
    ordinal()该方法用于得到枚举成员的位置索引枚举对象.ordinal()Constants_A.ordinal()

    3、访问方法

    在通过下列一组方法访问方法时,将返回Method类型的对象或数组。每个Method对象代表一个方法,利用Method对象可以操纵相应的方法。

    getMethods()
    getMethod(String name,Class...parameterTypes) getDeclaredMethods() getDeclaredMethod(Sting name,Class…parameterTypes)

    二、泛型

    泛型实质上就是使程序员定义安全的类型。在没有出现泛型之前,Java也提供了对Object的引用“任意化”操作,这种“任意化”操作就是对Object引用进行向下转型及向上转型操作,但某些强制类型转换的错误也许不会被编译器捕捉,而在运行后出现异常,可见强制类型转换存在安全隐患,所以在此提供了泛型机制。

    1、定义泛型类

    Object类为最上层的父类,很多程序员为了使程序更为通用,设计程序时通常使传入的值与返回的值都以Object类型为主。当需要使用这些实例时,必须正确地将该实例转换为原来的类型,否则在运行时将会发生ClassCastException异常。
    泛型语法如下:

    类名<T>
    
    • 1

    2、泛型的常规用法

    1、定义泛型类时声明多个类型
    在定义泛型类时,可以声明多个类型。语法如下:

    MutiOverClass<T1,T2>
    MutiOverClass;泛型类名称
    
    • 1
    • 2

    其中,T1和T2为可能被定义的类型。

    2、定义泛型类型时声明数组类型
    定义泛型类时也可以声明数组类型,下面的实例中定义泛型时便声明了数组类型。

    public class ArrayClass<T>{
    	private T[] array;
    	public void SetT(T[] array){
    		this.array = array;
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3、泛型的高级用法

    泛型的高级用法包括限制泛型可用类型和使用类型通配符等。
    1、限制泛型可用类型
    默认可以使用任何类型来实例化一个泛型类对象,但Java中也对泛型类实例的类型作了限制。语法如下:

    class 类名称<T extends anyClass>
    
    • 1

    其中,anyClass指某个接口或类。
    使用泛型限制后,泛型类的类型必须实现或继承了anyClass这个接口或类。无论anyClass是接口还是类,在进行泛型限制时都必须使用extends关键字。

    2、使用类型通配符
    在泛型机制中,提供了类型通配符,其主要作用是在创建一个泛型类对象时限制这个泛型类的类型实现或继承某个接口或类的子类。要声明这样一个对象可以使用“?”通配符来表示,同时使用extends关键字来对泛型加以限制。
    使用泛型类型通配符的语法如下:

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

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

    3、继承泛型类与实现泛型接口
    定义为泛型的类和接口也可以被继承与实现。
    例如在项目中创建一个类文件,在该类中继承泛型类。

    public class ExtendClass<T1>{
    }
    class SubClass<T1,T2,T3> extends ExtendClass<T1>{
    }
    
    • 1
    • 2
    • 3
    • 4

    三、总结

    这里的相关内容还没有整理完毕,文章后面持续更新,建议收藏。

    文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。

    可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。

  • 相关阅读:
    幸福里基于 Flink & Paimon 的流式数仓实践
    电力物联网关智能通讯管理机-安科瑞黄安南
    MAX485芯片介绍(MAX485ESA+T,半双工RS422和RS485串口收发传输芯片,2.5Mbps传输速率。5V逻辑电平)
    UE4 Physics Constraint Actor 实现钟摆效果
    怎样优雅地增删查改(五):按组织架构查询
    Markdown基础教程
    【python|scrapy】yield scrapy.Request在自定义函数中调用没有执行
    从架构设计的角度分析ios自带网络库和AFNetworking
    CloudCompare 二次开发(9)——半径滤波
    Unity热更新
  • 原文地址:https://blog.csdn.net/weixin_44096133/article/details/126088847