У меня есть два класса, и я хочу включить статический экземпляр одного класса в другой и получить доступ к статическим полям из второго класса через первый.
Это значит, что у меня могут быть неидентичные экземпляры с одинаковыми именами.
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);