我有一个最奇怪的问题.
我正在收到一个JSON对象
{"login":"admin","name":"Admin"}
Run Code Online (Sandbox Code Playgroud)
而我在代码中所做的是:
private _userData: User;
...
private getUserData() {
this._userInfoService.getUserInfo()
.subscribe(
data => {
this._userData = data.json(); // (using <User> data.json() changes nothing
},
err => alert(err)
);
}
Run Code Online (Sandbox Code Playgroud)
用户类型的位置
export interface User {
login: string;
name: string;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用angular访问html中的那些字段时:
<p>{{ _userData.login }}</p>
<p>{{ _userData.name }}</p>
Run Code Online (Sandbox Code Playgroud)
我在控制台中遇到了一些令人讨厌的错误:
Error: EXCEPTION: TypeError: l__userData21 is null in [{{ _userData.login }} in UserHomeComponent@8:7]
虽然我可以清楚地看到我在这个对象上做console.log的时候:
Object { login: "admin", name: "Admin" }
我和其他班级完全一样,它在那里工作.更有趣的是,当我稍微更改代码时,如下所示:
private _name: string;
private _login: string;
...
private getUserData() { …Run Code Online (Sandbox Code Playgroud) 我知道我可以过滤流只获取那些非空的元素,然后随心所欲地使用它们.像这样的东西:
myList.stream().filter(element -> element != null).doOtherThings...
Run Code Online (Sandbox Code Playgroud)
有没有办法断言元素在流函数中不为空,以便它遍历所有元素,如果它发现一个为null,它会抛出异常?我一直在考虑以下内容:
myList.stream().assert(Objects::nonNull).doOtherThings...
Run Code Online (Sandbox Code Playgroud) 假设我有一个Reports流,我有一个方法可以检查用户是否有权读取每个报告.如果用户没有权限,此方法将抛出异常
checkReadAuthorization(Report report) throw AccessViolationException;
Run Code Online (Sandbox Code Playgroud)
有没有办法过滤掉此方法引发异常的所有报告?就像是:
reports.stream()
.filterThrowingException(this::checkReadAuthorization);
Run Code Online (Sandbox Code Playgroud)
现在我有一个函数,如果抛出异常则返回true或false但是我想知道是否有更好的方法来实现这个
private boolean checkAuthorization(Report report) {
try {
checkReadAuthorization(report);
return true;
} catch(AccessViolationException ex) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我在这样的过滤器中使用它
return dossiers.stream()
.filter(this::checkAuthorization)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud) 我偶然发现我不小心这样做了:
@javax.annotation.Nullable
@javax.validation.constraints.NotNull
Run Code Online (Sandbox Code Playgroud)
编译器没有抱怨,一切似乎都很好。
现在,我想知道当两个或更多注释相互矛盾时内部发生了什么。此外,顺序重要吗?
这是
@Nullable
@NotNull
Run Code Online (Sandbox Code Playgroud)
比这一样吗?
@NotNull
@Nullable
Run Code Online (Sandbox Code Playgroud)
一般来说,这对注释如何起作用?谁赢?
编辑:我正在寻找一个一般性的答案,不一定关于这两个注释
java ×3
java-stream ×2
angular ×1
annotations ×1
assertion ×1
exception ×1
java-8 ×1
javascript ×1
json ×1
list ×1
nullable ×1
typescript ×1