У меня есть два класса, и я хочу включить статический экземпляр одного класса внутри другого и получить доступ к статическим полям из второго класса через первый.Как правильно получить доступ к статическим классам-членам?
Это значит, что у меня могут быть не идентичные экземпляры с тем же именем.
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 shoudl быть доступны в статическом пути». Может кто-нибудь объяснить, почему это так, и предложить «правильную» реализацию.
Я понимаю, что я мог бы получить доступ к статическим экземпляров непосредственно, но если у вас есть длинный иерархии пакетов, которая получает некрасиво:
assertEquals(net.FooCorp.divisions.A.package.Foo.bar, 1);
assertEquals(net.FooCorp.divisions.B.package.Foo.bar, 2);
Спасибо, это способ сделать это, даже если это не «java way». Я знал, что это возможно, потому что я могу создать статический внутренний класс, и он не дал бы ошибок, но это было бы кошмаром для обслуживания, и, следовательно, его можно было бы обескуражить. – fijiaaron 2008-09-18 23:06:05