Java 调用运算符时出现NullPointerException
我有一个在java类中定义的分数对象。我需要能够用我创造的分数做数学题。当我用一个未定义的分数进行数学运算时,我需要返回null。我的问题是,当用户不知道返回了null,并试图对设置为null的分数对象进行计算时 比如说Java 调用运算符时出现NullPointerException,java,object,nullpointerexception,operator-keyword,Java,Object,Nullpointerexception,Operator Keyword,我有一个在java类中定义的分数对象。我需要能够用我创造的分数做数学题。当我用一个未定义的分数进行数学运算时,我需要返回null。我的问题是,当用户不知道返回了null,并试图对设置为null的分数对象进行计算时 比如说 Fraction f1=null; Fraction f2=new Fraction(1, 2); Fraction f3=f1.add(f2); 这会给我一个错误。但是当我用另一种方式做的时候,没有错误 Fraction f1=null; Fraction f2=new F
Fraction f1=null;
Fraction f2=new Fraction(1, 2);
Fraction f3=f1.add(f2);
这会给我一个错误。但是当我用另一种方式做的时候,没有错误
Fraction f1=null;
Fraction f2=new Fraction(1, 2);
Fraction f3=f2.add(f1);
这不会出错,而是返回null
为什么上面的示例会出错?我如何强制它返回null?此外,如果分数为null,则检查不能在我的测试程序中进行,它必须在分数类中进行。
add操作符工作得很好。当分数对象等于null时,我只希望它返回null。在
null
对象上调用方法,将始终以NullPointerException
在null
对象上调用方法结束,将始终以一个NullPointerException
结束,因为您无法对null
对象调用方法,所以您尝试执行的操作是不可能的。尝试它总是会产生错误和例外。但是,如果这对您非常重要,您可以将API更改为具有两个参数的静态方法:
public static Fraction add(Fraction f1, Fraction f2)
现在,如果其中一个参数为
null
,则可以返回null
,,因为您无法对null
对象调用方法,所以无法尝试执行此操作。尝试它总是会产生错误和例外。但是,如果这对您非常重要,您可以将API更改为具有两个参数的静态方法:
public static Fraction add(Fraction f1, Fraction f2)
现在您可以返回
null
,如果其中一个参数为null
,那么上面的示例将失败,因为f1
为null,并且您无法在null上调用函数。你能做的就是用一个静态函数替换你的函数,这个静态函数可以同时测试两个操作数。对空引用调用方法是一个错误,并且总是会导致NPE。您希望分数f3在第二个示例中返回空值吗?@Scitech第二个示例已经返回空值。这是正确的。我希望第一个示例返回null。这不会发生。上面的示例失败,因为f1
为null,并且不能在null上调用函数。你能做的就是用一个静态函数替换你的函数,这个静态函数可以同时测试两个操作数。对空引用调用方法是一个错误,并且总是会导致NPE。您希望分数f3在第二个示例中返回空值吗?@Scitech第二个示例已经返回空值。这是正确的。我想让第一个例子返回null,这是不可能的。