Java-枚举类型

Posted 旷世奇才李先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java-枚举类型相关的知识,希望对你有一定的参考价值。

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

文章目录


前言

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

一、枚举类型

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

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

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

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

public enum Constants
	Constants_A,
	Constants_B,
	Constants_C

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>

2、泛型的常规用法

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

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

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

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

public class ArrayClass<T>
	private T[] array;
	public void SetT(T[] array)
		this.array = array;
	

3、泛型的高级用法

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

class 类名称<T extends anyClass>

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

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

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

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

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

public class ExtendClass<T1>

class SubClass<T1,T2,T3> extends ExtendClass<T1>

三、总结

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

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

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

以上是关于Java-枚举类型的主要内容,如果未能解决你的问题,请参考以下文章

Java-语言基础

Java程序员简历模板

我java里的枚举不懂...

(转)Java程序员简历模板

分享简历模板Java程序员 如何写出一份好的简历

Java里的包,类,接口,枚举是啥意思