2つのクラスがあり、一方のクラスの静的インスタンスをもう一方のクラスの中に含め、2番目のクラスから最初のクラスを介して静的フィールドにアクセスしたいと考えています。
これは、同じ名前の同一でないインスタンスを持つことができるようにするためです。
Class A
{
public static package1.Foo foo;
}
Class B
{
public static package2.Foo foo;
}
//package1
Foo
{
public final static int bar = 1;
}
// package2
Foo
{
public final static int bar = 2;
}
// usage
assertEquals(A.foo.bar, 1);
assertEquals(B.foo.bar, 2);
これは機能しますが、「静的フィールドFoo.barは静的な方法でアクセスする必要があります」という警告が表示されます。誰かがこれがなぜであるかを説明し、「正しい」実装を提供できますか?
静的インスタンスに直接アクセスできることはわかっていますが、パッケージ階層が長い場合は、見苦しくなります。
assertEquals(net.FooCorp.divisions.A.package.Foo.bar, 1);
assertEquals(net.FooCorp.divisions.B.package.Foo.bar, 2);