doStuff和返回布尔值是不好的做法吗?

时间:2015-08-06 14:50:16

标签: java null hashmap boolean return

在我正在关注的java课程中,如果键还没有值,我需要在键中添加一个值,除此之外,如果键有,它们也希望方法返回true当密钥已经有值时被添加或者为假。

HashMap<RegistrationPlate, String> register = new HashMap<RegistrationPlate, String>();
public boolean add(RegistrationPlate plate, String owner) {

    if (register.get(plate) == null) {
        register.put(plate, owner);
        return true;
    }
    return false;
}

我认为有一个返回真值的'add'方法很奇怪,如果这是一个void方法吗?

3 个答案:

答案 0 :(得分:2)

在Java的util类中,这些方法被广泛使用。

只需看看类ArrayList,几乎每个人都知道:

在这个类中有一个名为boolean add(T e)的方法, 并且java中有许多其他类都是这样工作的。

在我看来,没关系,它使测试更容易。 (您可以通过返回值检查方法是否成功)

答案 1 :(得分:0)

为添加这样的东西返回一个布尔值可能非常有用。实际上put会返回旧值,因为它有其用途。

因此您无需使用get - 或更好containsKey,但可以这样做:

public boolean add(RegistrationPlate plate, String owner) {
    String oldValue = register.put(plate, owner);
    return oldValue == null || !owner.equals(oldValue);
}

|| ...有点过头了。

答案 2 :(得分:0)

  

我认为有一个&#39;添加&#39;返回真值的方法,这应该是一个空方法吗?

绝对怪异。不要将boolean方法视为提问和回答是或否答案的方法。他们可以做得更多!

看看Java源代码,您将意识到某些方法具有boolean返回类型的好处。 想要向对象添加内容?它成功了吗?在多种情况下,boolean返回类型对于彼此之间进行通信的类/对象/方法是有利的。

查看Java的ArrayList remove(Object) implementation,了解提供额外信息的boolean返回类型的一个很好的例子。