0

有没有办法解决经典问题

public class SomeClass implements SomeOtherInterface {

  private static SomeInterface some;

  public SomeClass(SomeInterface someInterface) {
    some = someInterface;
  }

  @BeforeClass
  public static void doSomethingWithInterface() {
    System.out.println(someInterface.someValue()); // prints null
  }
}

除了交换

System.out.println(someInterface.someValue()); // prints null

System.out.println(SomeInterface.someValue());

如果 someValue 是静态的。问题是这是针对框架(扩展)的,并且 SomeInterface 的实现将由用户提供。

4

1 回答 1

1

static只需在构造函数中设置成员的值。因此,在没有该类的至少一个对象之前,您将无法访问someValue(). 在 Junit 中,@Before注释可能很有用,它在每次测试之前执行而不是static.

于 2012-12-11T18:10:33.267 回答