我有一个类如:
class node
{
Integer id ;
double lon;
double lat ;
.....
}
其他类中有一个方法从节点类中获取参数,并通过它们进行一些操作.... 在这个方法中,有条件,如(node1.getId == node2.getId)...
现在我需要给这个方法node1,node2参数,其中node1的id为null。 当它比较(node1.getId == node2.getId)时,抛出NullpointerException ......
Java中是否存在一个整数类型,我可以将它的对象与null进行比较?喜欢C#中的“int?”。
答案 0 :(得分:2)
没有像?
那样的东西。如果null
有可能,则必须对其进行测试。
所以,
if (node1 == null || node2 == null) {
return false;
}
答案 1 :(得分:2)
有关可能发生的事情的进一步信息。
从你的错误中,我猜你以前的吸气者是:
public int getId() {
return id; //Integer, needs to be converted
}
Java让你在int中更改Integer,实际调用的是:
public int getId() {
return id.intValue(); //Get the actual "int" value from the object
}
这就是为什么使用null id调用此方法会引发NullPointException,甚至在获取值之前。因为在您可以访问此方法之前调用了此方法。
这是一个经常发生的陷阱,因为它们允许从Integer到int的相反透明转换。如果您不知道幕后发生了什么,这很方便,但很难诊断。
答案 2 :(得分:1)
我认为你可以使用Integer
类而不是int类型。这是一个例子:
public class myClass {
Integer id;
public myClass() {
// A constructor with no arguments
id = null;
}
public void setId(int val) {
id = new Integer(val);
}
public Integer getId() {
return Id;
}
}
Integer
课程的参考资料如下:http://java.sun.com/javase/7/docs/api/java/lang/Integer.html
请注意,getId
方法返回一个Integer
对象,该对象可以是一个空对象。因此,可以评估if(getId()==null) {...}
希望这是有帮助的