"ไม่เหมาะสมบล็อกเขาก็บล็อกวิธีการเรียกว่า"เมื่อหนึ่ง StringBuilder appends อีก

0

คำถาม

ทำไม IntelliJ ความคิดแสดงคำเตือน"ไม่เหมาะสมบล็อกเขาก็บล็อกวิธีการเรียกว่า"เมื่อหนึ่ง StringBuilder appends อีก?

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

ฉันต้องสงสัยมันเป็นข้อผิดพลาด IntelliJ ความคิดเว้นแต่ว่ามีใครบางคนมาพร้อมกับคำอธิบายที่มีเหตุผล. เจอ https://youtrack.jetbrains.com/issue/IDEA-282947

2021-11-19 11:55:19
0

ฉันคิดว่ามันเป็นการปิดกั้นดังนั้นบางทีนั่นคือเหตุ intelliJ คือว่าอะไรหรอกลุยเลย ตั้งแต่คุณกำลังสร้างเสียงโมโน(mono)ในตอนจบของวิธีการทุกอย่างที่มาก่อนหน้านั้นคือประหารก่อนหรือออกไปข้างนอกเสียงโมโน(mono)ไหลเวียน. เห็นได้ชัดจุดประสงค์ของ reactive ไหลเวียน. ถ้าฉันใส่กิโมโนอยู่ทางด้านบนนั้นไม่มีคำเตือน:

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 คือประหารออกไปข้างนอกเสียงโมโน(mono)ไหลเวียน.

แล้วก็จิตใจคุณฉันคิดว่า intelliJ อาจจะคิดว่า sb1.append(sb2) คือโทรหาวัตถุ::toString()ซึ่งอาจเป็นการปิดกั้นเมื่อมัน caching ที่ชั้นเรียนชื่อใน 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ý
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่