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

空白最终变量

孔经武
2023-03-14
    null
public class foo
{
    public final int smth; //Variable might not have been initialized
    public final Integer smthElse; //Variable might not have been initialized

    public foo(JSONObject myObj)
    {
        if(myObj != null) {
            try {
                int extraParam = Integer.parseInt("ABCD"); //This is just an example for Exception to be called
                smth = extraParam;
                smthElse = extraParam;
            } catch (Exception e) {}
        } else {
            smth = 1;
            smthElse = 2;
        }
    }
}

共有1个答案

祝高超
2023-03-14

myobj为null时,将不设置最终字段。这会导致编译错误,它们必须在foo(Object myObj,int extraParam)构造函数完成后设置。

如果需要创建foo的实例,可以添加els块。

public foo(Object myObj, int extraParam) {
  if (myObj != null) {
    smth = extraParam;
    smthElse = extraParam;
  } else {
    smth = 0;
    smthElse = 0;
  }
}

或者创建工厂方法来执行检查。

private foo(int extraParam) {
  smth = extraParam;
  smthElse = extraParam;
}

public static foo from(Object myObj, int extraParam) {
  return (myObj == null) ? new foo(0) : new foo(extraParam);
}
 类似资料:
  • 问题内容: 我在查看有关最终变量的另一个问题,并注意到您可以声明最终变量而无需初始化它们(空白的最终变量)。是否有理由这样做,何时才是有利的? 问题答案: 这对于创建不可变对象很有用: Bla是不可变的(一旦创建,就无法更改,因为颜色是最终的)。但是您仍然可以通过用各种颜色构造它们来创建各种Blas。 例如,另请参阅此问题。 编辑 也许值得一提的是,“空白最终”在Java中具有非常特殊的含义,这似

  • 在Java8中,Java设计者提出了一个有效的final变量的概念,即一个如果被“final”追加就不会给编译器带来错误的变量。我的问题是,这个新提出的“有效最终”概念比经典的“最终”提供了什么?作为一名Java开发人员,我实际上得到了什么好处?

  • 问题内容: 我正在用Java编程。我已经在每种方法中添加了注释,以解释它们应该做什么(根据分配)。我将我所知道的添加到了存根(这是我在研究学校提供的javadoc之后创建的)。我的问题不是几个函数,我知道testWord和setWord中有错误,但是我自己解决。我的问题是关于这条线的: 这行是由学校提供的,因此我必须假设它是正确的,我在任何地方都找不到关于常量字段值INITIAL的任何文档,因此,

  • Table of Contents[内容列表] Blank Variable Handling[空白变量处理] Default Variable Handling[默认变量处理] Passing variable title to header template[把变量型标题传递到头模板] Dates[日期] WAP/WML[WAP/WML] Componentized Templates[组合的

  • 问题内容: 在我的创建表脚本中,我已将hasMultipleColors字段定义为BIT: 运行INSERT时,不会对此字段或其他BIT字段引发警告,但是选择行将显示所有BIT值均为空白。 从命令行手动尝试更新这些记录会产生奇怪的效果-显示该记录已匹配并已更改(如果适用),但始终显示为空白。 服务器版本:5.5.24-0ubuntu0.12.04.1(Ubuntu) 有什么想法吗? 问题答案: 您

  • 问题内容: 这个问题已经在这里有了答案 : 为什么在匿名类中只能访问最终变量? (15个答案) 为什么实例变量“忽略Lambda表达式中使用的变量必须是最终变量或实际上是最终变量”警告[重复] (2个答案) Lambdas:局部变量不需要最终变量,实例变量不需要 (10个答案) 2年前关闭。 当我编写此代码时,我收到一个编译时错误,该错误是: “ lambda中的变量必须是final或有效的fin