Java-枚举类型

举报
小奇JAVA 发表于 2022/08/04 22:53:43 2022/08/04
【摘要】 勤能补拙 文章持续更新,可以微信搜索【小奇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

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

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

public class ExtendClass<T1>{
}
class SubClass<T1,T2,T3> extends ExtendClass<T1>{
}

  
 
  • 1
  • 2
  • 3
  • 4

三、总结

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

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

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

文章来源: xiaoqijava.blog.csdn.net,作者:旷世奇才李先生,版权归原作者所有,如需转载,请联系作者。

原文链接:xiaoqijava.blog.csdn.net/article/details/126088847

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。