【发布时间】:2016-09-29 08:33:58
【问题描述】:
我有一个 MyClass 类,它有两个属性,一个是 String 类型,一个是 long 类型(我使用 lombok 来拥有所有参数构造函数)
@AllArgsConstructor
public class MyClass{
private String sth;
private long id;
//some methods
}
现在在我的测试工厂类中,我想要创建MyClass 对象的方法,其中String 设置为某物,id 设置为空
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,这解决了所有问题
【问题讨论】:
-
使用
Long而不是long。基元不访问空值。 -
您可以按照@Eran 的建议使用对象类型
Long而不是原始类型long。但请注意,如果您尝试在涉及autoboxing 的算术表达式中使用此 Long 值,您将得到NullPointerException。 -
@RafaelOsipov 自动装箱与它有什么关系?? ;)
-
您没有提供任何构造函数。当有人为 id 提供
null时会发生什么,您会将字段id分配为什么? -
正如@Eran 所说,当我再次阅读我的问题时,我注意到我使用了小写
long,这是原始的而不是warper 类Long
标签: java long-integer