代码之家  ›  专栏  ›  技术社区  ›  AYa

从另一个类调用枚举

  •  0
  • AYa  · 技术社区  · 6 年前

    这个问题可能有点太基本了。我试过已经给出的方法,但不起作用。 我想调用另一个类的枚举。

       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 回复  |  直到 6 年前
        1
  •  4
  •   Mark Bramnik    6 年前

    在Java中,不需要使用new来访问枚举值:

    Card card = Card.ACE;
    

    另请注意: 既然有公共getter,为什么不使用私有字段:

     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() 方法;举个例子:

    String name = Card.ACE.name();