标签: optional

如果不存在,如何在Optional上执行逻辑?

我想用java8替换下面的代码Optional:

public Obj getObjectFromDB() {
    Obj obj = dao.find();
    if (obj != null) {
        obj.setAvailable(true);
    } else {
        logger.fatal("Object not available");
    }

    return obj;
}
Run Code Online (Sandbox Code Playgroud)

以下伪代码不起作用,因为没有orElseRun方法,但无论如何它说明了我的目的:

public Optional<Obj> getObjectFromDB() {
    Optional<Obj> obj = dao.find();
    return obj.ifPresent(obj.setAvailable(true)).orElseRun(logger.fatal("Object not available"));
}
Run Code Online (Sandbox Code Playgroud)

java optional java-8

65
推荐指数
8
解决办法
9万
查看次数

'Optional.get()'没有'isPresent()'检查

我在Java中有以下搜索代码:

return getTableViewController().getMe().getColumns().stream().filter($->Database.equalsColumnName($.getId(), columnId)).findFirst().get();
Run Code Online (Sandbox Code Playgroud)

我希望按名称找到列并返回第一个找到的列.

我知道有一个案例,什么都没找到,应该处理,但如何?

这就是它所要的咒骂:

'Optional.get()' without 'isPresent()' check
Run Code Online (Sandbox Code Playgroud)

怎么修?null如果没有找到,我希望回来.

UPDATE

好吧,好吧,我只是没有意识到,那会findFirst()回来Optional.

java optional java-8 java-stream

64
推荐指数
4
解决办法
6万
查看次数

如何在Swift Dictionary中添加nil值?

我已经在我的应用程序中向我的服务器发出了请求.并发布类似这样的数据.服务器端正在等待所有参数,即使它们是零.但我无法将nil值添加到字典中.

 var postDict = Dictionary<String,AnyObject>
 postDict[pass]=123
 postDict[name]="ali"
 postDict[surname]=nil // dictionary still has only pass and name variables.
Run Code Online (Sandbox Code Playgroud)

有没有办法将nil值添加到字典?

null dictionary optional swift

61
推荐指数
4
解决办法
3万
查看次数

Django modelform不是必填字段

我有一个这样的表格:

class My_Form(ModelForm):
    class Meta:
        model = My_Class
        fields = ('first_name', 'last_name' , 'address')
Run Code Online (Sandbox Code Playgroud)

如何将地址字段设为可选?

django django-models django-forms optional

60
推荐指数
6
解决办法
5万
查看次数

我应该为每个可能返回null的方法使用Java8/Guava Optional吗?

可选用于表示可为空的对象,此类的一些用途包括

  1. 作为方法返回类型,作为返回null的替代方法,
    表示没有可用的值
  2. 区分"未知"(例如,不存在于地图中)和"已知没有值"(存在于地图中,值为
    Optional.absent())
  3. 在不支持null的集合中包装可存储的引用以进行存储(尽管还有其他几种方法应该首先考虑)

对于第一种情况,我是否需要在所有可空的返回方法中返回Optional?

java optional guava java-8

60
推荐指数
3
解决办法
2万
查看次数

在if语句中展开多个选项

我想在一个if语句中解包两个选项,但是编译器在操作符密码常量后抱怨了一个预期的表达式.可能是什么原因?

    if let email = self.emailField?.text && let password = self.passwordField?.text
    {
        //do smthg
    }
Run Code Online (Sandbox Code Playgroud)

在Swift完成.

optional swift

60
推荐指数
5
解决办法
3万
查看次数

如何将Optional <T>转换为Stream <T>?

我想在一个带有Optional的前缀中添加一个流.既然Stream.concat只能连接Streams我有这个问题:

如何将Optional <T>转换为Stream <T>?

例:

Optional<String> optional = Optional.of("Hello");
Stream<String> texts = optional.stream(); // not working
Run Code Online (Sandbox Code Playgroud)

java optional java-8 java-stream

60
推荐指数
4
解决办法
1万
查看次数

Java 8中的链接选项

寻找一种链接选项的方法,以便返回第一个存在的选项.如果没有,Optional.empty()则应退回.

假设我有几个像这样的方法:

Optional<String> find1()
Run Code Online (Sandbox Code Playgroud)

我想把它们链起来:

Optional<String> result = find1().orElse( this::find2 ).orElse( this::find3 );
Run Code Online (Sandbox Code Playgroud)

但当然这不起作用,因为orElse期望一个值,并orElseGet期望一个Supplier.

java lambda optional java-8

59
推荐指数
4
解决办法
3万
查看次数

在Swift中使用if in赋值的用法

Swift手册第61页的Swift文档提示可以使用where常规条件连接可选绑定.然而,当我这样做时,我有一个警告,建议我where用以下代码中的逗号替换:

if let geocodingError = error as? NSError where geocodingError.code == 2
Run Code Online (Sandbox Code Playgroud)

where optional ios swift swift3

56
推荐指数
2
解决办法
3万
查看次数

语句lambda可以用表达式lambda替换

我使用Optional工具进行用户和邀请验证

@DeleteMapping("/friends/{username}")
public
HttpEntity<Boolean> removeFriend(
        @ApiParam(value = "The user's name", required = true) @PathVariable String username
) {
    Long fromId = authorizationService.getUserId();

    return userService.findByUsername(username)
            .map(user -> {
                 return friendshipService.findFriendship(fromId, user.getId())
                        .map(friendship -> {
                            friendshipService.removeFriendship(friendship);

                            friendship.setToId(friendship.getFromId());
                            friendship.setFromId(friendship.getToId());

                            friendshipService.removeFriendship(friendship);

                            return ResponseEntity.ok(true);
                        }).orElseGet(() -> ResponseEntity.notFound().build());
            }).orElseThrow(() -> new ResourceNotFoundException("User not found"));
Run Code Online (Sandbox Code Playgroud)

但是,IntelliJ正在着色我的灰色返回 https://zapodaj.net/2f48b1a26c392.png.html 但是当我删除返回时,它向我突出显示没有返回https://zapodaj.net/37605f08165c9.png.html

有人可以解释它是如何工作的以及它的全部内容?

java lambda spring spring-mvc optional

55
推荐指数
2
解决办法
3万
查看次数