我有类似的东西
public class Toys {
public static Toy BAT = Registry.getToy("BAT");
public static Toy DOLL = Registry.getToy("DOLL");
}
Registry 跟踪所有类型为 Toy 的对象。当提供密钥时,它将返回有效的玩具实例。
当我这样做时,Toys.BAT,它给了我空值,但 Registry.getToy("BAT") 用有效的玩具实例返回给我。
公共类注册表{
private static final HashMap<String, Toy> _toysMap = new HashMap<String, Toy>();
public static void putToy( String toyCode, Toy toy) {
_toysMap.put( toyCode, Toy ) ;
}
public static Toy getToy(String toyCode ) {
return _toysMap.get( toyCode);
}
}
有什么我想念的非常明显的东西吗?
另外,我同时调用 Registry.getToy("BAT") 和 Toys.getToy("BAT") ..
这是失败的 TestRegistry
导入静态 org.junit.Assert.*;
导入 org.junit.Before;导入 org.junit.Test;
公共类TestRegistry {
@Before
public void setUp() throws Exception {
System.out.println(Toys.BAT);
Registry.putToy("BAT", new Toy());
Registry.putToy("DOLL", new Toy());
}
@Test
public void test() {
System.out.println(Registry.getToy("BAT"));
System.out.println(Toys.BAT);
assertTrue(Registry.getToy("BAT") == Toys.BAT);
}
}
以上印刷品
null - 注册表不包含玩具
Toy@80cac9 - Registry 现在有玩具了
null - Toys.BAT 仍然有 null 值。