"不适当的拦截方法叫"当一个StringBuilder追加的另一个

0

的问题

为什么IDEA显示警告"不宜阻挡的方法叫"当一个人 StringBuilder 追加的另一个?

public Mono<String> doSomethingReactive() {
    final StringBuilder sb1 = new StringBuilder("hello");
    final StringBuilder sb2 = new StringBuilder("world");
    sb1.append(sb2); // This append() causes warning "Inappropriate blocking method call"
    sb1.append(sb2.toString()); // ... but this append() is OK :)
    return Mono.just(sb1.toString());
}
2
0

我怀疑它是一个错误在IDEA,除非有人都配有一个合理的解释。 看看 https://youtrack.jetbrains.com/issue/IDEA-282947

2021-11-19 11:55:19
0

我认为这是阻止这样或许这就是为什么用浏览器是抱怨。 因为你创造的单的末端的方法的一切,在此之前,执行之前或者之外的单的流动。 它击败的目的是反应性的流动。 如果我把单,在上面然后没有警告:

public Mono<String> doSomethingReactive() {
    return Mono.just(new StringBuilder("hello"))
            .map(sb1 -> {
                StringBuilder sb2 = new StringBuilder("world");
                sb1.append(sb2);
                sb1.append(sb2.toString());
                return sb1.toString();
            });
}

在这种情况下,只有创造的第一个StringBuilder是外执行的单的流动。

此外,你要知道,我认为架构来达成这可能会认为 sb1.append(sb2) 是叫目::toString()这很可能被阻断时,它是高速缓存这类名称的而VM sb1.append(sb2.toString()) 被称为StringBuilder::toString()这可不做任何阻挡。

2021-11-19 13:17:47

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................