gpt4 book ai didi

java - 与 void 和 int 类型的方法结果相同,该使用哪个?

转载 作者:行者123 更新时间:2023-12-02 01:37:52 25 4
gpt4 key购买 nike

我有以下主类:

public class Test {

public static void main(String[] arg) {
Counter counter1;
Counter counter2;
counter1 = new Counter();
counter2 = new Counter();

counter1.increment();
counter2.increment();
counter2.increment();

System.out.println(counter1.getValue());
System.out.println(counter2.getValue());
}
}

以及类Counter:

public class Counter {

private int count;

public Counter() {
count = 0;
}

public void increment() {
count++;
}

public int getValue() {
return count;
}
}

我得到了结果(分别来自 counter1 和 counter2):

1   
2

但是如果我将方法 increment 更改为类型 int,即

public class Counter {

private int count;

public Counter() {
count = 0;
}

public int increment() {
return count++;
}

public int getValue() {
return count;
}
}

我得到了相同的结果:

1   
2

我知道 void 不会返回任何值,但是,在 int 上使用 void 是否有任何目的(反之亦然)在这个例子中?

最佳答案

您编写代码来做两件事:

  • 解决一些问题(例如实现计数器并提供对该计数器内部状态的访问)
  • 向人类读者传达您的意图

您可以决定使用 void 来指示调用increment() 并不意味着让您了解当前计数器计数。您可以使用 int 返回类型告诉读者该方法也提供该信息。但在第二种情况下,您也可以稍微更改方法名称,例如“incrementAndGet()”。

当您查看类似 https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html 的类(class)时你会经常发现“做某事并返回新状态”的模式。

是的,从结果中返回值可能会被视为违反 srp,但正如我的示例所示,有时稍微偏离是有帮助的,或者实际上是强制性的......

关于java - 与 void 和 int 类型的方法结果相同,该使用哪个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54959535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com