【问题标题】:Using enums in Java across multiple classes在 Java 中跨多个类使用枚举
【发布时间】:2011-06-05 19:35:36
【问题描述】:

我有以下课程:

public class Card 
{
    public enum Suit 
    {
        SPACES, HEARTS, DIAMONDS, CLUBS
    };

    public Card(Suit nsuit, int nrank)
    {
        suit = nsuit;
        rank = nrank;
    }

    private Suit suit;
    private int rank;
}

我想在另一个类中实例化它,但该类不理解 Suit 枚举。我应该将枚举放在哪里以使其公开可见?

【问题讨论】:

  • 顺便说一句,你的 Suit decl 后面的 ; 是不必要的。

标签: java class enums


【解决方案1】:

Suit 枚举在 Card 类中,您必须通过这种方式访问​​它:

Card.Suit suit = Card.Suit.CLUBS;

【讨论】:

  • 错误:需要意外类型:类,发现包:变量
【解决方案2】:

Suit 枚举位于 Card 类中,您必须通过这种方式访问​​它:

new Card(Card.Suit.SPADES, 1);

或者,您可以从 Card 中导入 Suit 类,然后直接访问它:

import my.package.Card.Suit;
new Card(Suit.SPADES, 1);

另一种选择是按照 Bert 的建议将 Suit 放入自己的类中。

【讨论】:

    【解决方案3】:

    枚举已经可见。

    Card card = new Card(Card.Suit.CLUBS, 5);
    

    将实例化一张新卡。

    无关...但您可能希望将 Spaces 套装变成 Spades 套装。 :)

    【讨论】:

      【解决方案4】:

      将 Suit 放入自己的类中:

      西装.java:

      public enum Suit 
      {
          SPACES, HEARTS, DIAMONDS, CLUBS
      }
      

      【讨论】:

      • 谢谢。我一直在考虑这个问题,但我认为所有类都需要 class 关键字。
      • @Richard - 是的,当我第一次看到它时,我感到很惊讶。
      • 这确实解决了问题,但我认为这不是最好的解决方案。 Suit 枚举属于 Card 类,因为您将始终一起使用它们。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      相关资源
      最近更新 更多