"Nepotrivit metodă de blocare apel" atunci când un StringBuilder adaugă un alt

0

Problema

De ce nu IntelliJ IDEA show avertizare "Nepotrivit metodă de blocare apel" atunci când unul StringBuilder adaugă altul?

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

Bănuiesc că este un bug în IntelliJ IDEA, dacă cineva vine cu o explicație rezonabilă. Vezi https://youtrack.jetbrains.com/issue/IDEA-282947

2021-11-19 11:55:19
0

Cred că este blocarea deci, poate că este motivul pentru intelliJ este proteste. Din moment ce sunt crearea Mono la sfârșitul metoda de tot ceea ce vine înainte, care este executată înainte sau în afara Mono flux. A învinge în scopul de a o reactive de curgere. Dacă am pus Mono la partea de sus, atunci nici un avertisment:

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();
            });
}

În acest caz, doar la crearea primului StringBuilder este executat în afara Mono flux.

De asemenea, tine minte, cred că intelliJ ar putea crede că sb1.append(sb2) este de asteptare Obiect::toString() care poate fi de blocare atunci când este caching numele clasei în VM întrucât sb1.append(sb2.toString()) este numit StringBuilder::toString() care nu poate face nici o gafă.

2021-11-19 13:17:47

În alte limbi

Această pagină este în alte limbi

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