从另一个类调用一个枚举

时间:2015-10-11 16:23:36

标签: java enums

我正在开发一个Deck项目,我有一个带有两个枚举的Card类:

$(window).load(function(){

    var tableRow = document.querySelectorAll('.dataRow');
    var links = $('.dataCell:nth-child(4) .zipUrl');

    if (tableRow.length === 0) return;

    var index = 0;

    function click() {

        if (index < tableRow.length) {
          //comment out line 14 to see console.log working normally
          $(links[index++]).click();
          console.log('Clicked on... ' + links[index]);
          click();

        }

    }
    click();

  }
);//]]> 

好吧,对于Card类,问题是我必须从另一个类调用它们,但NetBeans不允许我这样做:

package exercise4;
public class Card
{
    public enum Suit
    {
        HEARTS,SPADES,CLUBS,DIAMONDS
    }

    public enum CardValue
    {
        ACE,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,JACK,QUEEN,KING
    }
    private Suit s;
    private CardValue cv;
    other methods...
}

并且NetBeans强迫我这样做:

Card testcard=new Card(CardValue.ACE,Suit.HEARTS);

但是在我老师提供的测试文件中,他们以这种方式调用枚举,并且必须有效:

Card testcard=new Card(Card.CardValue.ACE,Card.Suit.HEARTS);

我做得不好? :/

由于

1 个答案:

答案 0 :(得分:0)

您可以直接使用CardValueSuit,只需导入它们,就像任何其他类/枚举/接口一样。

package stackoverflow;

import exercise4.Card;
import exercise4.Card.CardValue;
import exercise4.Card.Suit;

public class Main {
    public static void main(String[] args) {
        Card testcard = new Card(CardValue.ACE, Suit.HEARTS);
        // more code
    }
}

当然,您也可以将CardValueSuit顶级枚举转移到自己的源文件:CardValue.javaSuit.java

正如其他人所指出的那样,你也可以静态导入枚举值:

package stackoverflow;

import exercise4.Card;
import static exercise4.Card.CardValue.*;
import static exercise4.Card.Suit.*;

public class Main {
    public static void main(String[] args) {
        Card testcard = new Card(ACE, HEARTS);
        // more code
    }
}