Java “应为”返回什么值;int create();不执行该操作的方法?

Java “应为”返回什么值;int create();不执行该操作的方法?,java,Java,我有一个方法,由于项目的规范,它必须返回int 该方法是一个create()方法,用于创建对象并将其放入数组中。 然后返回它在数组中放置对象的位置 就在那时……到目前为止还不错 当您尝试创建数组中已存在的对象时,问题开始出现。我的代码防止创建重复项。但它仍然需要返回一个int 对于尚未创建的对象,我应该返回什么int -1号 空的 例外情况?这是您的设计选择。一般来说,您给出的三个答案都是有效的,但是标准方法是使用-1 要使用null,必须返回Integer而不是int,这将降低效率 -1永远不

我有一个方法,由于项目的规范,它必须返回int

该方法是一个create()方法,用于创建对象并将其放入数组中。 然后返回它在数组中放置对象的位置

就在那时……到目前为止还不错

当您尝试创建数组中已存在的对象时,问题开始出现。我的代码防止创建重复项。但它仍然需要返回一个int

对于尚未创建的对象,我应该返回什么int

-1号

空的


例外情况?

这是您的设计选择。一般来说,您给出的三个答案都是有效的,但是标准方法是使用-1

要使用null,必须返回
Integer
而不是
int
,这将降低效率


-1永远不是数组的有效索引,因此没有理由不使用它-它是所有库函数如
String.indexOf
所使用的。

这是您的设计选择。一般来说,您给出的三个答案都是有效的,但是标准方法是使用-1

要使用null,必须返回
Integer
而不是
int
,这将降低效率


-1永远不是数组的有效索引,因此没有理由不使用它-它是所有库函数如
String.indexOf
所使用的。

对象是基于create()方法的参数创建的吗?如果是这样,抛出一个IllegalArgumentException来表明这一点。(这比简单地获取“-1”更有意义。)

创建的对象是否基于create()方法的参数?如果是这样,抛出一个IllegalArgumentException来表明这一点。(对于初学者来说,这比简单地获取“-1”)更有意义,如果必须返回
int
,尝试运行将是一个编译错误(null表示对象,int表示灵长类,因此不是对象)

这就给我们留下了两个选择,其中任何一个都不比另一个好:

抛出异常

这很好,只要添加一个存在的对象是“异常”行为,毕竟它是一个异常

返回-1

这可能是首选选项,因为据我所知,添加一个已经存在的项目并不构成异常行为,而这是预期的。因为-1是一个永远不能返回的值,所以在这里就足够了


记住,这两种方法都是可以的,只要完全指定了将发生什么,并且您是一致的(不要一个方法抛出,而另一个方法返回-1错误),并且您坚持您的设计选择


作为旁注,值得一提的是像
java.util.Set
这样的接口,它定义了两个方法:一个在尝试添加副本时返回false,另一个抛出异常。

对于初学者,如果必须返回
int
,尝试运行将是一个编译错误(null表示对象,int表示灵长类,因此不是对象)

这就给我们留下了两个选择,其中任何一个都不比另一个好:

抛出异常

这很好,只要添加一个存在的对象是“异常”行为,毕竟它是一个异常

返回-1

这可能是首选选项,因为根据我的理解,添加一个已经存在的项并不构成异常行为,而是预期的异常行为。因为-1是一个永远无法返回的值,所以在这里就足够了


记住,这两种方法都是可以的,只要完全指定了将发生什么,并且您是一致的(不要一个方法抛出,而另一个方法返回-1错误),并且您坚持您的设计选择


作为旁注,值得一提的是像
java.util.Set
这样的接口,它定义了两种方法:一种是在尝试添加重复项时返回false,另一种是抛出异常。

另一种选择是返回现有项的id——毕竟,这不是决定“重复”的原因吗

由于此代码必须在现有的“规范”内工作,因此像-1(或引发异常)这样的值可能比返回现有元素的id更容易(或更少)破坏该基础结构


在任何情况下,都要确保记录行为并对实现进行集成测试。

另一种选择是返回现有项的id——毕竟,这不是决定“重复”的原因吗

由于此代码必须在现有的“规范”内工作,因此像-1(或引发异常)这样的值可能比返回现有元素的id更容易(或更少)破坏该基础结构


在任何情况下,都要确保记录行为并对实现进行集成测试。

我要说
-1
,因为
null
Exception
不是
int
s。但这完全取决于样式和上下文;没有“正确的”在这里回答。这是您的设计选择。使用-1执行,并始终保持一致。我见过返回null的专业代码,抛出异常应该取决于您的方法与调用方的约定。我要说
-1
,因为
null
exception
不是
int
s、 但这完全取决于风格和背景;没有“正确的”在这里回答。这是您的设计选择。使用-1进行操作并始终保持一致。我见过返回null的专业代码,抛出异常应该取决于您的方法与调用方的约定。好的。因此,在这种情况下,标准方法是使用-1。对我有效。CheersOK。因此