枚举

铭浩 2014-07-15 07:11:17
各位老师好:
今天看了下枚举类enum,对其不是非常的明白,如果它是一个类那么为什么不能NEW呢?这个枚举怎么用呢,小弟实在是搞不明白,麻烦高人指点迷津。
...全文
166 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
业余草 2014-07-16
  • 打赏
  • 举报
回复
引用 2 楼 u012335961 的回复:
[/codepublic enum Fruit {
	APPLE,PEAR,ORANGE
}
举个例子,Java通过enum关键字构建枚举类型,但其内在实现帮我们做了一系列的工作。
首先,Fruit就是一个Class,并继承自java.lang.Enum类,所以Enum类中实现的ordinal()和name()方法在枚举类型中可以调用。
然后,不能new Fruit是因为Java帮你构建枚举类型的时候屏蔽了Fruit的构造方法,即相当于声明了一个private的构造方法
而你的Fruit类中的APPLE、PEAR、ORANGE其实就相当于这个Fruit类的三个实例,他们是三个不可变对象,存在唯一实例。
其实Java帮我们做的一系列工作以后差不多就是这样:
[code=java]public class Fruit extends Enum{
//	APPLE,PEAR,ORANGE
	public static final Fruit APPLE = new Fruit("APPLE", 0);
	public static final Fruit PEAR = new Fruit("PEAR", 1);
	public static final Fruit ORANGE = new Fruit("ORANGE", 2);
}
这里的new Fruit()方法调用了Enum类的构造方法
public class Fruit extends Enum{
//	APPLE,PEAR,ORANGE
	public static final Fruit APPLE = new Fruit("APPLE", 0);
	public static final Fruit PEAR = new Fruit("PEAR", 1);
	public static final Fruit ORANGE = new Fruit("ORANGE", 2);
	private Fruit() {
		
	}
}
只不过由于泛型的限制Java不允许我们显式的声明一个类继承自Enum,它自动帮我们做了这一系列工作。 所以你不能new一个Fruit类,只能向里面加实例
说的非常的好
  • 打赏
  • 举报
回复
tony4geek 2014-07-16
  • 打赏
  • 举报
回复
枚举 很多用到的时候,楼上说了那么多。
hedley 2014-07-15
  • 打赏
  • 举报
回复
额上面的写乱了
public enum Fruit {
    APPLE,PEAR,ORANGE
}
举个例子,Java通过enum关键字构建枚举类型,但其内在实现帮我们做了一系列的工作。 首先,Fruit就是一个Class,并继承自java.lang.Enum类,所以Enum类中实现的ordinal()和name()方法在枚举类型中可以调用。 然后,不能new Fruit是因为Java帮你构建枚举类型的时候屏蔽了Fruit的构造方法,即相当于声明了一个private的构造方法 而你的Fruit类中的APPLE、PEAR、ORANGE其实就相当于这个Fruit类的三个实例,他们是三个不可变对象,存在唯一实例。 其实Java帮我们做的一系列工作以后差不多就是这样:
public class Fruit extends Enum{
//	APPLE,PEAR,ORANGE
	public static final Fruit APPLE = new Fruit("APPLE", 0);
	public static final Fruit PEAR = new Fruit("PEAR", 1);
	public static final Fruit ORANGE = new Fruit("ORANGE", 2);
	private Fruit() {
		
	}
}
这里的new Fruit()方法调用了Enum类的构造方法
    protected Enum(String name, int ordinal) {
        this.name = name;
        this.ordinal = ordinal;
    }
只不过由于泛型的限制Java不允许我们显式的声明一个类继承自Enum,它自动帮我们做了这一系列工作。 所以你不能new一个Fruit类,只能向里面加实例。
hedley 2014-07-15
  • 打赏
  • 举报
回复
[/codepublic enum Fruit {
	APPLE,PEAR,ORANGE
}
举个例子,Java通过enum关键字构建枚举类型,但其内在实现帮我们做了一系列的工作。
首先,Fruit就是一个Class,并继承自java.lang.Enum类,所以Enum类中实现的ordinal()和name()方法在枚举类型中可以调用。
然后,不能new Fruit是因为Java帮你构建枚举类型的时候屏蔽了Fruit的构造方法,即相当于声明了一个private的构造方法
而你的Fruit类中的APPLE、PEAR、ORANGE其实就相当于这个Fruit类的三个实例,他们是三个不可变对象,存在唯一实例。
其实Java帮我们做的一系列工作以后差不多就是这样:
[code=java]public class Fruit extends Enum{
//	APPLE,PEAR,ORANGE
	public static final Fruit APPLE = new Fruit("APPLE", 0);
	public static final Fruit PEAR = new Fruit("PEAR", 1);
	public static final Fruit ORANGE = new Fruit("ORANGE", 2);
}
这里的new Fruit()方法调用了Enum类的构造方法
public class Fruit extends Enum{
//	APPLE,PEAR,ORANGE
	public static final Fruit APPLE = new Fruit("APPLE", 0);
	public static final Fruit PEAR = new Fruit("PEAR", 1);
	public static final Fruit ORANGE = new Fruit("ORANGE", 2);
	private Fruit() {
		
	}
}
只不过由于泛型的限制Java不允许我们显式的声明一个类继承自Enum,它自动帮我们做了这一系列工作。 所以你不能new一个Fruit类,只能向里面加实例
疏可跑马 2014-07-15
  • 打赏
  • 举报
回复
枚举类型在C#或C++,java,VB等一些计算机编程语言中是一种基本数据类型而不是构造数据类型。 看书要仔细哦!其实这个百度一秒钟就出来了,传送门如下: http://baike.baidu.com/link?url=hQ9uc5cgUW13bAgFFUPdH-Kh1hn_uudX55u8AszY-eD8d-GjhDRD4Od2ShkE_7MJa8_yq-7O8QUAde2PvFTTZq
串联谐振双有源桥(SR-DAB)DC-DC变换器闭环仿真研究内容概要:本文围绕串联谐振双有源桥(SR-DAB)DC-DC变换器的闭环仿真展开研究,重点探讨其在电力电子系统中的动态响应特性与控制策略。通过对SR-DAB变换器建立数学模型,并结合Matlab/Simulink进行闭环仿真,分析系统在不同工作条件下的电压、电流波形及功率传输效率,验证控制算法的有效性与稳定性。研究涵盖系统建模、控制器设计(如PI控制)、软开关实现条件、抗干扰能力以及动态调节性能,旨在提升变换器在新能源、储能、数据中心供电等场景中的可靠性和能效水平。; 适合人群:具备电力电子、自动控制理论基础,从事新能源、微电网、电力系统仿真等相关领域的科研人员与工程技术人员。; 使用场景及目标:①用于高校及科研机构开展DC-DC变换器控制策略的教学与实验;②为工业界在高效率隔离型功率变换系统的设计与优化提供仿真依据和技术支撑;③服务于数据中心、电动汽车、可再生能源并网等场景下的电源系统研发。; 阅读建议:建议读者结合Matlab代码实践仿真流程,重点关注系统建模与控制器参数整定部分,通过调整负载、输入电压等条件观察系统响应,深入理解闭环控制对变换器性能的影响机制。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧