围绕
的经典问题有什么办法吗?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的实现。
答案 0 :(得分:1)
您只需在构造函数中设置static
成员的值。因此,在没有该类的至少一个对象之前,您将无法访问someValue()
。在Junit中,@Before
注释可能很有用,它在每次测试之前执行,而不是static
。