java中枚举器怎么用,java枚举使用怎么配置?java枚举是什么?

小伙伴们知道枚举吗?这是java中的一个小功能,因为很少使用到所以不常见,今天我们就来聊聊枚举是什么以及枚举的使用吧。

枚举是什么?

一般的说,枚举是一种特殊数据类型,说它特殊是因为,它既是类型却又比类型多了一些特殊约束,这些约束的存在造就了枚举的简洁,安全性以及便捷性。java中定义枚举需要使用enum关键字,隐含了所创建的类型都是java.lang.Enum类的子类(java.lang.Enum是一个抽象类)。枚举类型符合通用模式Class

Enum>,而E表示枚举类型的名称。枚举类型的每一个值都映射到protected Enum(String name,int

ordinal)构造函数中,在这里,每个值的名称都转换成一个字符串,并且序数设置表示了此设置被创建的顺序。

枚举可以根据Integer、Long、Short或Byte中的任意一种数据类型来创建一种新型变量。这种变量能设置为已经定义的一组之中的一个,有效地防止用户提供无效值。该变量可使代码更加清晰,因为它可以描述特定的值。

枚举怎么使用?

使用场景一:import java.util.Enumeration;

public class Months

{

public static String[] months = {

"JAN"

, "FEB"

, "MAR"

};

public static Enumeration elements()

{

return new MonthsEnumerator();

}

}

class MonthsEnumerator implements Enumeration

{

private int idx = 0;

public /*static*/ boolean hasMoreElements()

{

return (idx 

}

public /*static*/ Object nextElement()

{

return Months.months[idx++];

}

}

使用场景二:/**

* 这是比较规范的一个设计:

* 它是线程安全的,不可变的,并且很好的解决了序列化中的多实例问题

* 但是它仍然无法规避一个类可以被多个ClassLoader加载,这样仍然会出现多个实例

* 因为按照虚拟机规范:如果相同的一个类同时被多个类加载器加载,虚拟机会认为这几个类不是同一个类,会共存

*/

public class Month implements Comparable, java.io.Serializable

{

public static final Month JAN = new Month("January");

public static final Month FEB = new Month("February", 28);

public static final Month MAR = new Month("March");

public static final Month APR = new Month("April", 30);

public static final Month MAY = new Month("May");

public static final Month JUN = new Month("June", 30);

public static final Month JUL = new Month("July");

public static final Month AUG = new Month("August");

public static final Month SEP = new Month("September", 30);

public static final Month OCT = new Month("October");

public static final Month NOV = new Month("November", 30);

public static final Month DEC = new Month("December");

private static final Month[] MONTH_ARRAY = {

JAN

, FEB

, MAR

, APR

, MAY

, JUN

, JUL

, AUG

, SEP

, OCT

, NOV

, DEC

};

private static int count = 0;

private final String name;

private final int number;

private final int days;

private Month(String name)

{

this(name, 31);

}

private Month(String name, int days)

{

this.name = name;

this.days = days;

this.number = ++count;

}

public String getName()

{

return name;

}

public String getAbbev()

{

return name.substring(0, Math.min(3, getName()

.length()));

}

public int getNumber()

{

return number;

}

public int getDays()

{

return days;

}

public String toString()

{

return name;

}

@Override

public int compareTo(Object o)

{

return getNumber() - ((Month) o)

.getNumber();

}

//readResolve这个方法目的是解决序列化的单例问题

//保证该类对象在序列化后,再进行反序列化时使用在jvm中只有一个对象

Object readResolve() throws java.io.ObjectStreamException

{

return MONTH_ARRAY[number - 1];

}

}

从一些场景可以看出,在JDK的枚举类型出现之前,主要依托Enumeration这个枚举器接口,具体的设计需要手动实现,而实现了Enumeration接口的类负责对设计的类似枚举类进行迭代。

这就是枚举的所有介绍了,有关java入门的更多相关知识,请一直关注我们的网站了解吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
众所周知,人工智能是当前最热门的话题之一, 计算机技术与互联网技术的快速发展更是将对人工智能的研究推向一个新的高潮。 人工智能是研究模拟和扩展人类智能的理论与方法及其应用的一门新兴技术科学。 作为人工智能核心研究领域之一的机学习, 其研究动机是为了使计算机系统具有人的学习能力以实现人工智能。 那么, 什么是机学习呢? 机学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据学习得到模型参数,并最终对数据进行预测和分析的一门学科。 机学习的用途 机学习是一种通用的数据处理技术,其包含了大量的学习算法。不同的学习算法在不同的行业及应用能够表现出不同的性能和优势。目前,机学习已成功地应用于下列领域: 互联网领域----语音识别、搜索引擎、语言翻译、垃圾邮件过滤、自然语言处理等 生物领域----基因序列分析、DNA 序列预测、蛋白质结构预测等 自动化领域----人脸识别、无人驾驶技术、图像处理、信号处理等 金融领域----证券市场分析、信用卡欺诈检测等 医学领域----疾病鉴别/诊断、流行病爆发预测等 刑侦领域----潜在犯罪识别与预测、模拟人工智能侦探等 新闻领域----新闻推荐系统等 游戏领域----游戏战略规划等 从上述所列举的应用可知,机学习正在成为各行各业都会经常使用到的分析工具,尤其是在各领域数据量爆炸的今天,各行业都希望通过数据处理与分析手段,得到数据有价值的信息,以便明确客户的需求和指引企业的发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值