English 中文(简体)
1. 与Enum类的结合
原标题:Confusion with Enum type
  • 时间:2011-10-18 04:46:56
  •  标签:
  • java

为什么在我界定一个大体时,我通过一份外地名称清单,然后,这些外地名称(例如,日安星期一)最终指外地 值<>? 我可以穿过一个领域(例如,星期一,星期一),然后使用开关,以获得外地价值。 更奇怪的是,当我宣布大田时,我甚至不必将名字放在引号上,尽管这些名字实际上具有价值。

最佳回答

认为 Java是确定一个等级的冰yn。 这里是一份可帮助:

$ cat > Direction.java
public enum Direction {NORTH, EAST, SOUTH, WEST}
$ javac Direction.java 
$ javap Direction
Compiled from "Direction.java"
public final class Direction extends java.lang.Enum{
    public static final Direction NORTH;
    public static final Direction EAST;
    public static final Direction SOUTH;
    public static final Direction WEST;
    public static Direction[] values();
    public static Direction valueOf(java.lang.String);
    static {};
}

因此,你可以说,<代码>EAST是<代码>Direction的一个领域,其价值是<代码>Direction。 我们将此价值称为<代码>。 EAST 同样,你指的是通过任何其他类别静态领域的价值。

也许这种混淆是你没有看到类似声明的结果。

public static final Direction.EAST = SOMETHING_OR_OTHER_HERE;

这是可以理解的。 Enums旨在初步确定这些实地价值,但你并没有明确地开始这些价值。 这正是你们所说的。

public static final Direction.EAST = new Direction();

事实上,这是所谓“Typesafe Enum”模式的一部分,在Java之前通常使用这一模式。

关于你对引言的评论,完全没有理由引用任何内容,因为没有涉及任何内容。

关于您对开关的评论,是的,外地名称和外地价值的概念如何在这里发挥作用有些意思。 但这只是因为价值看上去外地。 换言之,在<代码>Direction上的外地代码的价值良好,Direction。 EAST。 但是,如果你想到这一点,这并不与字面太大。 <代码>Float.NaN的价值 您可以问: 其实是Float.Na/code>。 具有不透明价值。

问题回答

Enums in Java aren t like enums in other languages. They take some getting use to. Essentially, an enum is a special class, and each enum you declare is an object of that class:

public enum Day {

    MONDAY, TUESDAY, WEDNESDAY

}

星期一、星期二和星期三是班次日的目标,你利用正常班级获得同样的影响,但大堂对你的意图是明确的。 此外,你也可以在别处设立排排,但只能放在顶点。 这意味着,汇编者始终知道总价值的完整清单,并允许 Java在交换声明等地方使用标记,因为汇编者拥有制作跳跃表和检查贵代码正确性所需的一切信息。

星期一为而不是一个标签,标明某些分类价值,如其他语文的表格。 它是像任何其他 Java物体一样的物体。 因此,你没有引用这些文字。 它像书面一样:

final static Day MONDAY = new Day();
final static Day TUESDAY = new Day();

等等。 即便如此,你也能够做到:

public enum Day {

    MONDAY("Mon", false), TUESDAY("Tue", false), WEDNESDAY("Wed", true);

    private String shortForm = null;
    private boolean humpDay = false;

    Day(String shortForm, boolean humpDay) {
        this.shortForm = shortForm;
        this.humpDay=humpDay;
    }

    public String getShortForm() {
        return shortForm;
    }

    public boolean isHumpDay() {
        return humpDay;
    }

}

星期一、星期四、下午3:00和下午3:00均为一天,每个星期都有自己的成员,包括简短发言。 表格和 h。 甚至有一个建筑商。 见? 物体,而不是数值。

需要时间短? 仅限时。 你可以这样做,用其他语言来描述你们的令人厌恶的榜样。

我希望能够提供帮助。 贾瓦图格人的力量特别强大,但对于使用其他语言的人来说,如果他们有这一突破时刻,那会令人困惑不解。 它们是:

我的看法是,这只是一种独特的价值观的“清单”,这些价值观包括分配给他们的名字。 几天后,你可以有1至7个单位,但根据你的法典,更方便地指定代表星期一、星期二等物体的类别。 你们也可以在每周的一天宣布固定不变,但你必须打上更多的代码。 似乎并没有像班级那样引入一些新的方案拟订模式,只是一种方便的捷径。





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...