我想用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中有以下搜索代码:
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.
我已经在我的应用程序中向我的服务器发出了请求.并发布类似这样的数据.服务器端正在等待所有参数,即使它们是零.但我无法将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值添加到字典?
我有一个这样的表格:
class My_Form(ModelForm):
class Meta:
model = My_Class
fields = ('first_name', 'last_name' , 'address')
Run Code Online (Sandbox Code Playgroud)
如何将地址字段设为可选?
可选用于表示可为空的对象,此类的一些用途包括
对于第一种情况,我是否需要在所有可空的返回方法中返回Optional?
我想在一个if语句中解包两个选项,但是编译器在操作符密码常量后抱怨了一个预期的表达式.可能是什么原因?
if let email = self.emailField?.text && let password = self.passwordField?.text
{
//do smthg
}
Run Code Online (Sandbox Code Playgroud)
在Swift完成.
我想在一个带有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) 寻找一种链接选项的方法,以便返回第一个存在的选项.如果没有,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.
Swift手册第61页的Swift文档提示可以使用where常规条件连接可选绑定.然而,当我这样做时,我有一个警告,建议我where用以下代码中的逗号替换:
if let geocodingError = error as? NSError where geocodingError.code == 2
Run Code Online (Sandbox Code Playgroud) 我使用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
有人可以解释它是如何工作的以及它的全部内容?
optional ×10
java ×6
java-8 ×5
swift ×3
java-stream ×2
lambda ×2
dictionary ×1
django ×1
django-forms ×1
guava ×1
ios ×1
null ×1
spring ×1
spring-mvc ×1
swift3 ×1
where ×1