gpt4 book ai didi

java - Guava 可选。如何正确使用

转载 作者:搜寻专家 更新时间:2023-11-01 01:03:14 24 4
gpt4 key购买 nike

我有课

private class TouchCommand {
private int action;
private int x;
private int y;
...

命令执行时,需要校验字段值——null/not null,并据此产生纵向 Action 。我想使用 Google Guava 的选项。

哪种解决方案是正确的?这个:

public boolean executeCommand() {
Optional<Integer> optionalAction = Optional.fromNullable(action);
...

或:

private class TouchCommand {
private Optional<Integer> action;
private Optional<Integer> x;
private Optional<Integer> y;
...

鉴于对 parseAction 的调用也可能返回 null(或不存在):

TouchCommand touchCommand = new TouchCommand();
touchCommand.mAction = parseAction(xmlParser.getAttributeValue(namespace, "action"));
...

问题:

  1. 是否这样做:方法 parseAction(和类似方法)返回 Optional?
  2. 是否这样做:类对象的字段可选?
  3. 是否这样做:在检查类的字段(假设它们可以为空)时将它们转换为对象 Optional ?

谢谢。

最佳答案

Guava 贡献者在这里...

任何或所有这些东西都很好,但其中一些可能有点矫枉过正。

一般来说,如 this StackOverflow answer 中所述, Optional 主要用于两件事:通过 null 使您的意思更清楚,并在方法返回值中使确保调用者处理“不存在”的情况(使用 null 更容易忘记)。我们当然不提倡在您的代码中到处用Optional替换每个可为空的值——我们当然不会在 Guava 中这样做!

其中很多都必须由您来决定——没有通用的规则,这是一个相对主观的判断,而且我没有足够的背景来确定我会在你的位置做什么——但基于什么根据您提供的上下文,我会考虑让这些方法返回 Optional,但可能不会更改任何其他字段或任何内容。

关于java - Guava 可选。如何正确使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11561789/

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