我有两个类,并希望在另一个类中包含一个类的静态实例,并通过第一个类访问第二个类的静态字段。
这样我就可以拥有同名的不同实例。
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);