首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我们在使用Elasticsearch时将方法的参数标记为最终参数?

为什么我们在使用Elasticsearch时将方法的参数标记为最终参数?
EN

Stack Overflow用户
提问于 2022-01-31 07:51:36
回答 1查看 52关注 0票数 1

我最近开始学习Elasticsearch,已经看了几个关于这项技术的视频,并注意到我们将方法参数中的字段标记为final。同时,当对实例使用MySQL时,我们不会用这个关键字标记参数。

为什么?因为与MySQL不同的是,在Elasticsearch中没有字段锁和事务?

例如:

让我们假设我们在应用程序中为用户提供了一个REST控制器,并且在这个控制器中基于其id返回用户。

在我们使用MySQL的情况下:

代码语言:javascript
运行
复制
@GetMapping(“/user/{id}”)
public User getUserById(@ParhVariable Long id) {
return userRepository.getById(id).orElse(null);
}

在使用Elasticsearch的情况下:

代码语言:javascript
运行
复制
@GetMapping(“/user/{id}”)
public User getUserById(@ParhVariable final Long id) {
return userRepository.getById(id).orElse(null);
}
EN

Stack Overflow用户

回答已采纳

发布于 2022-01-31 12:30:15

它没有连接到ElasticSearch或MySQL。当您将final关键字设置为您的id变量时,您就不能在getUserById方法中为这个变量分配一个新的值(在Long情况下是一个对象)。

它防止出现这种情况:

代码语言:javascript
运行
复制
@GetMapping(“/user/{id}”)
public User getUserById(@ParhVariable Long id) {
    id = 10L; // new value
    return userRepository.getById(id).orElse(null); // will response with wrong entity
}

在上面的代码中,程序将不返回用户期望的值。如果您在final变量上设置了id关键字,并试图为id分配新的值--程序甚至不会编译,这就防止了运行时不期望的行为。

无论是否使用final,都没有严格的规则--最常见的方法是在代码冗长复杂时使用final

也检查this的答案。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70922664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档