枚举java之间的静态变量引用

时间:2016-08-24 23:01:16

标签: java junit enums architecture static

我正在使用三个java文件并使用Junit。

测试类是我在主类中的枚举方面遇到错误的地方。

修改

我发现这是按原样运作的。只是没有更大规模的实施。

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
    }
}

你能告诉我在我的产品类中找不到任何值吗?

1 个答案:

答案 0 :(得分:0)

您需要更好地掌握声明某事static的含义。我认为每个Good都需要拥有自己的状态 - 因此您没有将private status声明为static,因此您走在正确的轨道上。你的问题(正如Boris指出的那样)是你试图通过使用status(类级别)方法来改变实例变量static

我想你会想要使用类似下面的内容来启动你。

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
     }
}