当前位置: 首页 > 知识库问答 >
问题:

未分配静态值并返回空值

胡野
2023-03-14

我有点像

public class Toys {

public static Toy BAT = Registry.getToy("BAT");
public static Toy DOLL = Registry.getToy("DOLL");

}

其中,注册表保存所有类型为Toy的对象的跟踪。当提供密钥时,它将返回有效的Toy实例。

当我这样做的时候,玩具。蝙蝠,它给我空值,但注册表。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);
}

}

我有什么明显遗漏的吗?

另外,我正在给注册中心打电话。getToy(“蝙蝠”)和玩具。getToy(“蝙蝠”)同时。。

这里是测试注册表失败

导入静态组织。朱尼特。断言。*;

导入组织。朱尼特。之前导入组织。朱尼特。测验

公共类测试注册表{

@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-现在玩具归登记处了

空-玩具。BAT仍然有空值。

共有3个答案

龙安阳
2023-03-14
@Before
public void setUp() throws Exception {
    System.out.println(Toys.BAT); --> Loads class and initializes static variables
    Registry.putToy("BAT", new Toy()); --> populates Registry (HashMap)
    Registry.putToy("DOLL", new Toy()); --> populates Registry (HashMap)
}

在加载Toys类之前,需要初始化注册表中的值。我同意评论人士的看法,他们说这不是初始化这些文件的好方法。

华安民
2023-03-14

你查过蝙蝠和蝙蝠的案子了吗

干浩然
2023-03-14

当然,查看注册表的代码是了解问题所在的必要条件。

但一般来说,这样初始化静态变量是不安全的。也许在玩具类加载时,注册表仍然没有正确加载所有玩具条目。

 类似资料:
  • 问题内容: 我有以下MySQL查询,该查询应该返回表a和b中的记录(一对多关系),以及用逗号分隔的列表,其中列出了从表c返回的任何值。但是,表c中不会总是有记录(这就是为什么我使用LEFT OUTER JOIN将其联接到表a中的原因)。 上面的查询应返回2时返回1条记录。记录1在表c中具有3条匹配记录,记录2在表c中具有0条匹配记录。 查询返回: 如果删除GROUP_CONCAT和GROUP_BY

  • 我的预览在方法中调用时返回null。测试类确实扩展了,因为它被保存在

  • 问题内容: 我有一组复选框,这些复选框在选中时将值传递为1,否则将值传递为0。但是,不是将未选中的复选框的值发送为“ 0”,而是发送的值为“ NULL”。 我在下面的JS代码中应将值相应地设置为0/1,但是仍然将该值作为NULL发送。有什么方法可以确保在未选中复选框的情况下传递的值为0? 更新 这是我的html: 默认情况下,它们都被选中。 如果未选中其中之一,则MySQL报告以下错误:0SQLS

  • 当我在android Studio中集成OpenCV进行眼睛检测时。集成后消息打印Opencv安装成功消息生成,但出现错误。 无法从加载器加载detection_based_trackerdalvik.system.PathClassLoader[DexPathList[[zip file"/data/app/com.example.admin.lanskart-2.apk],nativeLibr

  • 这一行是: 我在和上尝试了和,但仍然给出相同的错误

  • 我有这个功能 我用它来表示,我知道T现在不是空的,所以给我它的非空的形式。 我对函数不满意,有更好的方法吗?我觉得我错过了一些基本的东西