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

确保在构造函数引发异常时初始化了最后一个变量

蒯宏达
2023-03-14

我有一个最终的会员数据:

public final Foo foo;

在构造函数中,foo的初始化如下:

foo = new Foo();

现在,不幸的是,Foo的构造函数可能会引发异常:

try {
    foo = new Foo();
} catch (Exception e) {
    e.printStackTrace();
}

但是现在编译器抱怨foo可能没有被初始化,如果foo的构造函数抛出异常,这是真的。但是如果我将foo=null放入catch大括号中,它会抱怨foo可能已经初始化。

Foo是我无法修改的第三方库。

共有1个答案

萧繁
2023-03-14
foo = createFoo();

...


private static Foo createFoo() {
    try {
        return new Foo();
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

如果内部对象的构造函数失败了,我不评论继续构造外部对象是否有意义...

 类似资料:
  • 问题内容: 我有两个班,第一个是我的主班,第二个是我的编辑框架班。 我的第二个类(UpdateGUI)在其构造函数中提供oldName,并对其进行编辑,当我单击时,它将newName发送给我的第一个类。 我的第二堂课: 我的问题是,为什么newName为null? 更新: UpdateGUIDialog类: 输出: 我需要打印而不是null。 问题答案: Java对象有点像真实对象。并顾名思义:它

  • 问题内容: 有没有在Java构造函数中使用最终变量的解决方案?问题是,如果我初始化一个最终字段,例如: 那么我就不能在构造函数中使用它。Java首先运行构造函数,然后运行字段。有没有一种解决方案可以让我访问构造函数中的final字段? 问题答案: 我不太明白你的问题。那 执行如下:

  • 问题内容: 我有一堂课,在那堂课我有: 然后在我的构造函数中: 如果这样做,一切正常。默认数据值已初始化,但如果我改为这样做: 它说: 为什么? 在构造函数内部初始化数组的最佳方法是什么? 问题答案: 这已经将您的数组元素初始化为0。您无需在构造函数中再次重复该操作。 在您的构造函数中,它应该是:

  • -----------这是我的文件服务---------------------我使用的是spring boot 2.2.2 -------这是我的文件控制器-------- 进程已完成,退出代码为%1