有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (5) 个答案

  1. # 1 楼答案

    您甚至不必在容器类中处理它。在控制器类或调用该方法的类中处理它。如果你真的想,如果什么都没有回来,就返回-1编辑:如果-1是有效值,则选择一个无效值作为返回值。我的偏好是避免NULL

    例如

    if ( get(tempKey) == -1 )
        //you know it isn't a match, do something with it, throw exception...etc.
    
  2. # 2 楼答案

    取决于应用程序-这就是我要说的。我会尽量确保你的两个问题在张贴上述

    我会回来很久。第一次查询的最小值为,第二次查询的最小值为null

    返回null并不是那么糟糕——请阅读下面关于我选择的解释

    当您开发调用其他类和方法的类和方法时,作为经验法则;您应该根据调用方法后逻辑处理合同的方式来定义预期的合同(参数和返回值)

    在您的情况下,如果该方法必须返回一个long,并且您没有任何要返回的内容,则返回long。最小值。通过这种方式,您可以将应用程序与负数作为有效返回值的情况隔离开来——很少有处理时间长的程序。最小值

    进入第二个问题-当地图中不存在密钥时,应该返回什么。Java SDK展示了一种方法:返回null是最好的选择。这将迫使您在处理代码之前检查get()方法的有效返回值。假设您没有捕获NullPointerException,这也会导致您的应用程序在错过此类检查时崩溃—这是一个很好的快速失败实现,可以帮助您识别丢失的链接

  3. # 3 楼答案

    我建议抛出一个异常,它从签名中清楚地描述了您的方法。如果没有找到匹配项,我不建议返回null或返回-1,因为该方法的行为不会从其签名中反映出来。谁会使用该方法需要记住,或者您需要记录,如果没有找到匹配项,那么它将返回null或-1,并且在客户机代码中,他们需要使用条件来处理它。但通过抛出异常,您将在方法签名本身中记录行为。在客户端代码中,它们必须在方法抛出异常时进行处理

  4. # 4 楼答案

    您应该做任何适合您的容器的用例的事情:

    1. 如果调用缺少索引的容器可能是错误的 在调用客户机代码中,则应引发异常
    2. 如果使用缺少的键调用此方法是非常常见的,并且不会 表示错误,那么客户端代码可能需要一些默认值 没有显式设置值时的值。所以你应该回来 这个值
    3. 如果要显式声明没有值 对于此密钥,并期望客户端代码正确处理此问题, 然后将返回类型更改为Long并返回null

    在任何情况下,为容器类和方法编写良好的文档,清楚地定义其契约

  5. # 5 楼答案

    这将取决于它能返回什么。如果它永远不能返回-1,那么您可以返回-1(这通常用于这类事情)

    如果它可以返回-1,那么您可以抛出异常

    您也可以使用Long类返回null,但是抛出异常应该更好