Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在对象构造函数中为long类型的属性传递null_Java_Long Integer - Fatal编程技术网

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

Java 在对象构造函数中为long类型的属性传递null,java,long-integer,Java,Long Integer,我有一个类MyClass,它有两个属性,一个是类型String,另一个是类型long(我使用lombok来拥有所有参数构造函数) 现在在我的测试工厂类中,我希望有一个方法来创建MyClass的对象,其中String设置为something,而id设置为null public static MyClass getMyClassWithNullId() { return new Myclass("some string", null); } 但是,上述代码无法编译: 构造函数MyC

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

现在在我的测试工厂类中,我希望有一个方法来创建
MyClass
的对象,其中
String
设置为something,而
id
设置为null

public static MyClass getMyClassWithNullId() {
        return new Myclass("some string", null);
}
但是,上述代码无法编译:
构造函数MyClass(字符串,null)未定义

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


编辑:MyClass的私有字段
id
被设置为
Long
,而不是
Long
,这解决了构造函数应该是什么样子的问题

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

然后调用newmyclass(“hello”,null)将有效

您的构造函数应该如下所示

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


然后调用newmyclass(“hello”,null)将是有效的

ok,nevermind,
long
是一个基本类型,不能为空,使用warper类
long
解决它

ok,nevermind,
long
是一个基本类型,不能为空,使用warper类
long
解决它

使用
long
而不是
long
。原语不访问空值。您可以使用对象类型
Long
,而不是@Eran建议的原语类型
Long
。但是请注意,如果您试图在算术表达式中使用这个长值,这涉及到,您将得到
NullPointerException
@RafaelOsipov自动装箱与它有什么关系??)您没有提供任何构造函数。当有人为id提供
null
时会发生什么情况,您将如何分配
id
字段?正如@Eran所述,当我再次阅读我的问题时,我注意到我使用小写
long
而不是warper class
long
使用
long
而不是
long
。原语不访问空值。您可以使用对象类型
Long
,而不是@Eran建议的原语类型
Long
。但是请注意,如果您试图在算术表达式中使用这个长值,这涉及到,您将得到
NullPointerException
@RafaelOsipov自动装箱与它有什么关系??)您没有提供任何构造函数。当有人为id提供
null
时会发生什么情况,您将如何分配
id
字段?正如@Eran所述,当我再次阅读我的问题时,我注意到我使用了小写
long
而不是warper class
long
,或者他用(“hello”,0)来调用它。你的答案听起来似乎是解决他的问题的唯一办法。0与null@GhostCat0表示一个值,null表示不引用此实例,我希望您清楚这一点。这取决于他想要的id是什么意思。如果他的意思是长,那么传递null是没有意义的。您假设他试图传递null意味着他应该使用Long。我只是说他可能不知道自己在做什么。然后,你的解的值与传递0的值相同。@GhostCat和u也在做一些strage假设。如果
(id==null
)可能会自动生成
id
。。。。。简单用例。至于“可能null与传递0相同”的假设-是的,可能。但这与问题无关,或者他用“你好”,0来称呼它。你的答案听起来似乎是解决他的问题的唯一办法。0与null@GhostCat0表示一个值,null表示不引用此实例,我希望您清楚这一点。这取决于他想要的id是什么意思。如果他的意思是长,那么传递null是没有意义的。您假设他试图传递null意味着他应该使用Long。我只是说他可能不知道自己在做什么。然后,你的解的值与传递0的值相同。@GhostCat和u也在做一些strage假设。如果
(id==null
)可能会自动生成
id
。。。。。简单用例。至于“可能null与传递0相同”的假设-是的,可能。但这与问题无关。