枚举:-27

多例设计模式特点:构造方法私有化,而后在类的内部实例化好若干个对象,并且通过static方法返回,按照之前编写的多例设计是存在问题的
范例:观察问题
package listen;
class Color{
private String title;
private static final Color RED=new Color("红色");
private static final Color GREEN=new Color("录色");
private static final Color BLUE=new Color("蓝色");
private Color(String title) {
this.title=title;
}
public String toString() {
return this.title;
}
public static Color getInstance(int ch) {
switch(ch) {
case 0:
return RED;
case 1:
return GREEN;
case 2:
return BLUE;
default :
return null;
}
}
}
public class Listenb {
public static void main(String[] args) {
// TODO Auto-generated method stub
Color red=Color.getInstance(2);
System.out.println(red);
}
}
在之前的代码之中,实现的多例设计模式里面存在一个矛盾,发现用户实际并不知道类中存在多少个对象,而且所有的对象必须通过一个static方法,传入一些数字类取得
从JDK1.5增加一个enum关键字,使用它可以定义枚举
范例:定义枚举
enum Color{
RED,GREEN,BLUE;
}
枚举之中对象都是使用static final定义的,那么一定需要使用大写表示。
范例:使用枚举
package listen;
enum Color{
RED,GREEN,BLUE;
}
public class Listenh {
public static void main(String[] args) {
// TODO Auto-generated method stub
Color red=Color.RED;
System.out.println(red);
}


}
此时可以非常清楚的发现,直接利用枚举对象就可以取得里面保存对象信息。同时在枚举操作的过程里面还可以取得全部可对象
范例:输出枚举的所有内容
package listen;
enum Colora{
RED,GREEN,BLUE;
}
public class Listenh {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(Colora c: Colora.values()) {
System.out.println(c);
}
}


}
通过之前的演示应该清楚了enum关键字的作用,但是严格来讲,在java之中,使用enum关键字定义的枚举对象严格来讲就相当于是一个使用class
定义的类,而后继承了Eunm类是一样的,首先Enum是一个抽象类,在Enum类之中定义了如下的方法:
构造方法:protected Enum(String name,int ordinal),构造被封装,子类可以调用。
取得枚举名字:public final String name();
取得枚举:public final int ordinal()

范例:调用Enum类的方法
package listen;
enum Colorb{
RED,GREEN,BLUE;
}
public class Listenha {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(Colorb c: Colorb.values()) {
System.out.println(c.name()+","+c.ordinal());
}
}
}
面试题:解释Enum和enum的区别?
enum是一个关键字,而Enum是一个抽象类
使用enum定义的结构就相当于一个类继承了Enum类。


在枚举之中定义其它结构
枚举是多例设计模式的实现,但是通过研究多例设计模式,可以清楚发现,多例设计模式之中,除了定义类对象之外,实际上还可以构造方法
普通方法,属性,而枚举也可以做到。但有如下要求
1.枚举之中定义多个结构的时候,枚举的对象要写在类第一行;
2.枚举毕竟属于多例设计,构造方法绝对不能使用public表示
范例:在枚举中定义其它结构
enum Colorc{
RED("红色"),GREEN("录色"),BLUE("蓝色");//对象
private String title;
private Colorc(String title) {
this.title=title;
}
public String toString() {
return this.title;
}
}
public class Listenhb {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(Colorc c: Colorc.values()) {
System.out.println(c);
}
}
}
处理以上的结构,枚举作为一个特殊的类,也可以让其实现接口。
 package listen;
interface Messagea{
public String getInfo();
}
enum Colord implements Messagea{
RED("红色"),GREEN("录色"),BLUE("蓝色");//对象
private String title;
private Colord(String title) {
this.title=title;
}
public String getInfo() {
return this.title;
}
public String toString() {
return this.title;
}
}
public class Listenhc {
public static void main(String[] args) {
// TODO Auto-generated method stub
Messagea msg=Colord.RED;//向上转型
System.out.println(msg.getInfo());
}
}
枚举的概念清楚之后,思考一下枚举能做什么?例如:人的性别是固定的两个。
范例:使用枚举
package listen;
enum Sex{
MALE("男"),FEMALE("女");
private String title;
private Sex(String title) {
this.title=title;
}
public String toString() {
return this.title;
}
}
class Person{
private String name;
private int age;
private Sex sex;
public Person(String name,int age,Sex sex){
this.name=name;
this.age=age;
this.sex=sex;
}
public String toString() {
return "姓名:"+this.name+",年龄:"+this.age+",性别:"+this.sex;
}
}
public class Listenhd {


public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(new Person("张三",20,Sex.MALE));
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,可以使用关键字`enum`来创建枚举。下面是一个简单的示例代码: ```java public enum Color { RED, GREEN, BLUE; } ``` 在上面的示例中,我们创建了一个名为`Color`的枚举,它包含了枚举常量:`RED`、`GREEN`和`BLUE`。你可以根据自己的需求添加更多的枚举常量。 枚举可以像其他一样拥有字段、方法和构造函数。你可以根据需要在枚举常量后面添加字段和方法。下面是一个稍复杂的示例: ```java public enum Planet { MERCURY(3.303e+23, 2.4397e6), VENUS(4.869e+24, 6.0518e6), EARTH(5.976e+24, 6.37814e6), MARS(6.421e+23, 3.3972e6), JUPITER(1.9e+27, 7.1492e7), SATURN(5.688e+26, 6.0268e7), URANUS(8.686e+25, 2.5559e7), NEPTUNE(1.024e+26, 2.4746e7); private final double mass; // 质量 private final double radius; // 半径 private final double G = 6.67300E-11; // 万有引力常数 Planet(double mass, double radius) { this.mass = mass; this.radius = radius; } public double getMass() { return mass; } public double getRadius() { return radius; } public double surfaceGravity() { return G * mass / (radius * radius); } public double surfaceWeight(double otherMass) { return otherMass * surfaceGravity(); } } ``` 在上面的示例中,我们创建了一个名为`Planet`的枚举,它包含了一些行星的枚举常量,每个常量都有对应的质量和半径。此外,它还定义了一些方法来计算行星的表面重力和表面重量。 希望这个示例能帮助你理解如何在Java中创建枚举

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值