2016-08-24 9 views
0

私はJunitを使用していて、使用している3つのjavaファイルを持っています。java間の静的変数参照enum

テストクラスは、メインクラスにある列挙型に関して私のエラーを取得しています。私はこれがあるとして働いていたことが判明

EDIT

。単に大規模な実装ではありません。

Goods.java

class Good { 
    private static StaticTest.THESES name; 
    static void setStatusName(StaticTest.THESES status) { 
     name = status; 
    } 
    static StaticTest.THESES getStatusName() { 
     return name; 
    } 
} 

Test.class

import org.junit.Test; 
import static org.junit.Assert.*; 

public class Tests { 

    @Test 
    public void test() { 
     Good good = new Good(); 
     good.setStatusName(Library.STATUSES.HIM); 
     String actual = good.getStatusName().toString(); 

     String expected = Library.STATUSES.HIM.toString(); 
     assertEquals(expected, actual); 
    } 

    public static void main(String args[]) { 
     Tests runningTest = new Tests(); 
     runningTest.test(); 
    } 
} 

class Library { 
    public static enum STATUSES { 
     YOU, ME, HER, HIM, THEM, US 
    } 
} 

あなたは私の製品クラスから任意の値を見つけることができないものを私に伝えることができますか?

+2

'private Library.STATUSES status;'は静的ではありません。このコードはquirkのためだけにコンパイルされます - 'status = status'は値を_itself_に代入します。 –

+0

Javaの命名規則に従ってください。 –

+0

@BoristheSpider私は 'getStatus()'がコンパイルされるとは思わない。 – shmosel

答えて

0

staticを宣言することの意味をよりよく理解する必要があります。私はそれぞれGoodが自分のステータス権を持っている必要があると思うので、あなたはprivate statusstaticと宣言していないので正しい道のりです。あなたの問題(Borisが指摘したように)は、(クラスレベル)メソッドを使用してインスタンス変数statusを変更しようとしています。

私は、次のようなものを使い始めたいと思っています。

public class Test { 

    public static void main(String[] args) { 
     Good good = new Good(); 
     good.setStatus(Library.STATUS.SALE); 
     System.out.println("Good's status: " + good.getStatus()); 
    } 

} 

class Good { 

    private Library.STATUS status; 

    public void setStatus(Library.STATUS status) { 
     this.status = status; 
    } 
    public Library.STATUS getStatus() { 
     return status; 
    } 
} 

class Library { 

    public enum STATUS { 
      SALE, NOSALEITEM, ITEMOOS, SHIPPING, ONORDER, INSTOCK 
    } 
} 
関連する問題