我来自C世界,我们使用“define”来定义不同的返回值,从C函数返回的值,如下所示:
#define RETURN_SUCCESS 0
#define RETURN_ERROR -1
int myFunc()
{
if(...) return(RETURN_SUCCESS);
else if(...) return(RETURN_ERROR);
}
这是如何用Java完成的,正确的方法?
假设我有:
public MyObject findMyObject()
{
MyObject tempObject = search();
if( tempObject.type == myType )
{
return tempObject;
}
else
{
return null;
}
}
可以退回null
吗?
有更合适的方法吗?
答案 0 :(得分:5)
返回null是可以的。您会在Java API中注意到returns null sometimes or -1 where an Int is expected。如果出现问题,经常使用的另一个选项是throw an exception。
这个问题往往会让大多数人和你现在可能会问自己的问题是“嗯,我什么时候会抛出异常,什么时候才能返回null?”这个问题得到了很好的回答here。
答案 1 :(得分:4)
使用返回代码来指示Java中的错误是一种反模式。你应该使用例外。
如果错误是由编程错误引起的(参数无效,状态不正确),则抛出未经检查的异常实例。
如果错误是因为环境中出现了问题(无法连接到服务器,找不到所需的文件),则抛出已检查的异常。
答案 2 :(得分:1)
返回符合您定义的规范的内容总是可以的。因此,如果您在文档中定义(javadoc和tests)哪些情况可能导致返回null,那么您可以毫不费力地返回它。
您还必须明白,错误代码(如C代码)的人质不是Java中最好的策略。有些人甚至可能认为它是反模式。使用异常更常见。鉴于您不熟悉Java,请考虑阅读http://docs.oracle.com/javase/tutorial/essential/exceptions/中的教程以获取更多信息。