我有两个类,想在其中一个类内包含另一个类的静态实例,并通过第一个类访问第二个类的静态字段。
这样我可以拥有名称相同但非相同的实例。
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);
这种写法是能用,但会出现一个警告:"The static field Foo.bar should be accessed in a static way"。有人能解释一下为什么会有这个警告,并提供一种"正确"的实现方法吗?
我知道可以直接访问静态实例,但如果包层次很深,那就很麻烦:
assertEquals(net.FooCorp.divisions.A.package.Foo.bar, 1);
assertEquals(net.FooCorp.divisions.B.package.Foo.bar, 2);
import package1.Foo; import package2.Foo;
,这是非法的,因为它使得 Foo 不明确。 - erickson