当前位置: 首页 > 知识库问答 >
问题:

Spring 引导将字段初始化为空

宇文嘉勋
2023-03-14

我有一个控制器,它根据< code>id是否为空来查找一个或多个资源。

java prettyprint-override">@GetMapping(value = "/teste")
@ResponseStatus(value = HttpStatus.OK)
public ResponseEntity<?> find(Optional<ZonaIdDTO> id) {
    if (id.isPresent()) {
        return new ResponseEntity<>(
            this.zonaMapper.toZonaRetrievalDTO(this.zonaService.findById(id.get())),
            HttpStatus.OK
        );
    }

    return new ResponseEntity<>(
        this.zonaService
            .findAll()
            .stream()
            .map(this.zonaMapper::toZonaRetrievalDTO)
            .collect(Collectors.toSet()),
        HttpStatus.OK
    );
}

问题是条件< code>id.isPresent()总是被评估为< code>false,即使我没有将< code>id传递给控制器。在这种情况下,< code>id对象字段被初始化为< code>null,但是我希望对象本身为< code>null。我能怎么做呢?

共有1个答案

周滨海
2023-03-14

java 中的可选永远不能为空。它必须始终为非空,如果没有数据,则 is.isPresent() 将为 false。

如果不需要对象 id 为 null,则需要将函数签名保留为

公共响应实体

 类似资料:
  • 当云联壹云的First Node部署成功后,用户可根据使用场景快速引导配置云联壹云平台。 设置管理员用户 当First Node节点部署完成后,用户在浏览器中输入First Node节点的IP地址,如提示“您的连接不是私密连接”,请单击 “高级” 按钮,并单击“继续前往x.x.x.x(不安全)”,打开云管平台控制台。 在管理员注册页面,设置管理员账号、密码,单击 “注册” 按钮,创建管理员用户。

  • 我想将一些对象实例绑定到使用Javassist创建的类。该对象是从某个源读取的,数据是预先未知的。 但当我检查API时,Javassist似乎创建了一个真正的字节码,它以“调用这个”或“实例化那个”或“使用这个常量”的形式存储初始化。 有没有办法让Javassist向运行时给定的现有实例添加一个初始化的静态字段?

  • 问题内容: 我在Go中有一个函数,如下所示: 我想用参数(“ Bob”,“ New York”,“ Builder”,30、1000)调用此函数,但我想在调用函数时使用字段名称。但是,以下技术均无效(它们会引发“未解决的参考错误”): 应该如何正确完成?我在初始化结构时使用字段名称没有问题,但是对于函数来说,似乎缺少了一些东西。 问题答案: 该规范不允许你调用函数时指定参数名称。您只能列出希望作为

  • 静态字段何时初始化?如果我从未实例化过一个类,但我访问了一个静态字段,那么用于实例化私有静态字段的所有静态块和私有静态方法(按顺序)都在那一刻被调用了吗?或者什么时候启动应用程序?

  • 我用一个自动生成的服务运行100个JUnit测试。我有一个名为createArray的服务,该服务在ArrayList中添加值。问题是数组列表中保留的值。当一个新的测试用例运行时,它将自己的值添加到数组中。 每当新的测试用例运行时,我想清除自动生成的creatArray对象。

  • 我使用FFMPEG-segment对桌面上的视频捕获进行分段,并通过网络发送它们,以便提供给客户,并使用dash.js播放。问题是播放器正在搜索初始化段,而我似乎不知道如何创建它。 我使用以下ffmpeg命令创建段: 我为流创建的清单如下所示: 播放机调试模式打印以下内容: 如何为生成的段创建初始化段?我似乎无法让它起作用。

  • 我使用Cassandra作为我的Spring boot应用程序的数据源,并希望在应用程序启动前初始化数据库。 到目前为止,我所做的是,我已经定义了一个类“CassandraConfiguration”,扩展了“AbstractCassandraConfiguration”类,如下面的示例所示,我有一个扩展“CassandraRepository”的存储库。当我自己创建键空间和表时,应用程序工作正常

  • 问题内容: 在将java.util.Date变量初始化为空时,我需要您的帮助。当我运行页面时,如果我没有选择任何日期,它将显示nullpointerexception。 代码是: 我试图使该变量为空,但是它不起作用> 但是,使用初始化: 上面的代码会给我一个我不想要的默认值。 问题答案: java.util.Date的 实例存储一个日期。那么,如何在其中什么也不存储呢?它只能存储对实例的引用。如果