如何用Java 8编写instanceof?
我是Java8的新手。我必须更改以下代码:如何用Java 8编写instanceof?,java,java-8,instanceof,Java,Java 8,Instanceof,我是Java8的新手。我必须更改以下代码: @RequestMapping(value = "/account", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<UserDTO> getAccount() { return Optional.ofNullable(use
@RequestMapping(value = "/account",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<UserDTO> getAccount() {
return
Optional.ofNullable(userService.getUserWithAuthorities())
.map(user ->
new ResponseEntity<>(
new UserDTO(
user.getLogin(),
null,
user.getFirstName(),
user.getLastName(),
user.getEmail(),
"",
user.getLangKey(),
user.getAuthorities()
.stream()
.map(Authority::getName)
.collect(Collectors.toList())
),
HttpStatus.OK
)
)
.orElse(new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR));
}
谢谢你这样做。但是,您必须将
u
转换为所需的类型
if (u instanceof Admin) {
Admin a = (Admin) u;
// your logic
}
你可以这样做:
@RequestMapping(value = "/account",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<UserDTO> getAccount() {
return Optional.ofNullable(userService.getUserWithAuthorities())
.map(user -> {
if (user instanceof Admin) {
//...
}
return new ResponseEntity<>(new UserDTO(...), HttpStatus.OK);
})
.orElse(new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR));
}
@RequestMapping(value=“/account”,
method=RequestMethod.GET,
products=MediaType.APPLICATION\u JSON\u值)
公共响应getAccount(){
返回可选的.ofNullable(userService.getUserWithAuthories())
.map(用户->{
if(管理员的用户实例){
//...
}
返回新的ResponseEntity(newuserdto(…),HttpStatus.OK);
})
.orElse(新响应属性(HttpStatus.INTERNAL_SERVER_ERROR));
}
但是,如果可以,请避免使用
instanceof
运算符。将isAdmin
方法添加到您的User
类中:在classAdmin
中,它将返回true
,在classNormalUser
中,它将返回false您的意思是我可以在新的ResponseEntity中添加此逻辑?是的,这将代替UserDTO构造函数调用。@Pracade是的,您可以。
@RequestMapping(value = "/account",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<UserDTO> getAccount() {
return Optional.ofNullable(userService.getUserWithAuthorities())
.map(user -> {
if (user instanceof Admin) {
//...
}
return new ResponseEntity<>(new UserDTO(...), HttpStatus.OK);
})
.orElse(new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR));
}