Java 8中用户定义对象的缺省值

时间:2018-05-24 20:25:47

标签: java type-inference

所以,如果我只是遗漏了一些非常明显的东西,我现在有点困惑,但希望这是一个简单的问题

我创建了一个用户定义的对象,其中包含两个构造函数,默认的无参数构造函数和一个以整数作为参数的构造函数

然后我在另一个类中创建了一个引用var而没有创建该对象 所以像这样

public class A{
     int num;

     public A{}
     public A(int num){this.num = num;}
}

public class B{
  A a;
}

所以这就是我的问题所在,在B类中,根据我的理解,实例变量 a 应该得到默认值 null ,因为它是一个对象引用,但我得到的默认值为 0

从查看我的代码我知道这个行为是由我的类A构造函数中的int param的param类型引起的

public A(int num){this.num = num;}

为什么会这样?为什么它不是空的?

由于

2 个答案:

答案 0 :(得分:0)

如果你说

B b = new B();
// b.a == null #TRUE
b.a = new A();
// b.a == null # FALSE
// b.a.num == 0 #TRUE

答案 1 :(得分:0)

WITH cte AS (
    SELECT * FROM ...
)
UPDATE table_to_update
SET column_from_table_to_update = cte.some_column
FROM cte
WHERE table_to_update.id = cte.id