从另一个类调用枚举

时间:2018-09-30 02:54:03

标签: java enums

这可能是一个太基本的问题。我已经尝试了已经给出的方法,但是没有用。 我想从另一个类调用ENUM。

   package com.blackjack.game.cards;
public enum Card implements Comparable<Card> {

    ACE(1, 11),
    KING(13, 10),
    QUEEN(12, 10),
    JACK(11, 10),
    TEN(10, 10),
    NINE(9, 9),
    EIGHT(8, 8),
    SEVEN(7, 7),
    SIX(6, 6),
    FIVE(5, 5),
    FOUR(4, 4),
    THREE(3, 3),
    TWO(2, 2);

    public final int rank;
    public final int value;
    private static final String[] CARD_NAMES = {
            "joker", "ace", "two", "three",
            "four", "five", "six", "seven",
            "eight", "nine", "ten", "jack",
            "queen", "king"
    };

    private Card(final int rank, final int value) {
        this.rank = rank;
        this.value = value;
    }

    public int getRank() {
        return rank;
    }

    public int getValue() {
        return value;
    }

我正在通过以下方式执行此操作,但是它不起作用。

import com.blackjack.game.cards.Card; Card card = new Card.ACE;

1 个答案:

答案 0 :(得分:4)

在Java中,您无需使用new即可访问枚举值:

$ ./a.out
3$ 

另一个说明: 既然您有公共获取者,为什么不使用私有字段:

Card card = Card.ACE;

还有一个注意事项,就是CARD_NAMES似乎没有在任何地方使用,而是私有的。

枚举可以在字符串字段中包含名称:

 private final int rank;
 private final int value;

创建枚举时:

private final int rank;
private final int value;
private final String name;

public String getName() {return name;}

或者,您可以通过内置的ACE(1, 11, "ace"), KING(13, 10, "king") .... 方法访问创建的枚举的名称;这是一个例子:

name()