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コンストラクターだけでメンバーの値を設定します。したがって、そのクラスのオブジェクトが少なくとも 1 つなくなる前に、アクセスすることはできませんsomeValue()。Junit では、@Before各テストの前に実行され、実行されないアノテーションが役立つ場合がありstaticます。

于 2012-12-11T18:10:33.267 に答える