在 long 类型的 属性 的对象构造函数中传递 null

passing null in object constructor for property of type long

我有一个 class MyClass 它有两个属性,一个是 String 类型,一个是 long 类型(我使用 lombok 来拥有所有参数构造函数)

@AllArgsConstructor
public class MyClass{
    private String sth;
    private long id;

    //some methods
}

现在在我的测试工厂中 class 我想要创建 MyClass 对象的方法,其中 String 设置为某物并且 id 设置为 null

public static MyClass getMyClassWithNullId() {
        return new Myclass("some string", null);
}

但是上面的代码无法编译: The constructor MyClass(String, null) is undefined

为什么我不能将 null 传递给 long? (任何 long 值而不是 null 都是正确的)

编辑:MyClass 的私有字段 id 应该是 Long 而不是 long,这解决了所有问题

你的构造函数应该看起来像

public void MyClass(String str,Long param){}

然后像new MyClass("hello",null);这样的调用将有效

ok,没关系,long是原始类型,不能为null,用warper class Long解决了