gpt4 book ai didi

java - "NonNull if the function returns non-null"?

转载 作者:搜寻专家 更新时间:2023-11-01 03:31:34 24 4
gpt4 key购买 nike

考虑一个方法,比如ConcurrentHashMapcompute方法:

public V compute(
K key,
BiFunction<? super K,? super V,? extends V> remappingFunction)

我想用检查器框架注释它以进行可空性检查:

public @Nullable V compute(
K key,
BiFunction<? super K, ? super @Nullable V, ? extends @Nullable V> remappingFunction);

但这不太正确:我希望能够推断它返回 ?扩展@NonNull V 以避免在我知道 remappingFunction 永远不会返回 null 的情况下进行空检查,例如:

@NonNull V value = map.compute(key, (k, v) -> {
if (v == null) {
return new V();
}
v.increment();
return v;
});

可以这样表达吗?

最佳答案

Checker Framework提供了两种编写条件规范的方法,其中一种类型取决于其他值或类型。

  • > @PolyNull表示两个类型必须相同,但它们的共同类型可以是@NonNull@Nullable。看起来这将使您能够表达所需的规范。
  • > @EnsuresNonNullIf使类型依赖于方法的返回值。

这两个都在 Nullness Annotations 节中进行了描述在Checker Framework Manual .

PS:一旦您有了改进的规范,您可以将其作为拉取请求提交,以更新 Checker Framework 附带的带注释的 JDK。

关于java - "NonNull if the function returns non-null"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51431288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com