私は次のようなものを持っています
public class Toys {
public static Toy BAT = Registry.getToy("BAT");
public static Toy DOLL = Registry.getToy("DOLL");
}
ここで、Registry は Toy タイプのすべてのオブジェクトを追跡します。キーが提供されると、有効な Toy インスタンスが返されます。
Toys.BAT を実行すると null 値が返されますが、Registry.getToy("BAT") は有効な Toy インスタンスを返します。
パブリック クラス レジストリ {
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は次のとおりです
import static 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 - レジストリにおもちゃができました
null - Toys.BAT にはまだ null 値があります。