我有类似静态值没有得到分配和返回空值
public class Toys {
public static Toy BAT = Registry.getToy("BAT");
public static Toy DOLL = Registry.getToy("DOLL");
}
其中注册表会类型玩具的所有对象的轨道。当提供一个键时,它将返回有效的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”)..
下面是其失败
进口静态org.junit的TestRegistry 。断言。*;
import org.junit.Before; import 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);
}
}
上面打印
空 - 注册表犯规包含
玩具@ 80cac9玩具 - 注册表有玩具现在
null - Toys.BAT仍然为空值。
这块绳子我在这里在我的手中......它有多长时间? :P如果没有完整的注册表对象的源代码,我们可能会动摇一个魔法8球。 – mcfinnigan 2012-04-20 13:48:05
我们需要看看'Registry'以及你如何把东西放进去。 – 2012-04-20 13:48:24
在程序流程中您是否在调用Toys.BAT? – LexyStardust 2012-04-20 13:50:07