คำถามติดแท็ก java

Java เป็นภาษาการเขียนโปรแกรมระดับสูงที่เป็นที่นิยม ใช้แท็กนี้เมื่อคุณมีปัญหาในการใช้หรือทำความเข้าใจภาษานั้น ๆ แท็กนี้ไม่ค่อยได้ใช้คนเดียวและมักใช้ร่วมกับ [สปริง], [สปริงบูต], [jakarta-ee], [android], [javafx], [gradle] และ [maven]

2
Android AsyncTask API กำลังลดลงใน Android 11 ทางเลือกคืออะไร?
แก้ไข : คำถามนี้ไม่ซ้ำกันว่า เพียงสองสามวันกลับ AOSP กระทำเมื่อเลิกใช้แล้ว คำถามอื่น ๆ เกี่ยวกับการใช้ AsyncTaskLoader ผ่าน AsyncTask Google กำลังเลิกใช้ Android AsyncTask API ใน Android 11 และแนะนำให้ใช้java.util.concurrentแทน คุณสามารถตรวจสอบการกระทำที่นี่ * * @deprecated Use the standard <code>java.util.concurrent</code> or * <a href="https://developer.android.com/topic/libraries/architecture/coroutines"> * Kotlin concurrency utilities</a> instead. */ @Deprecated public abstract class AsyncTask<Params, Progress, Result> { หากคุณกำลังบำรุงรักษา codebase ที่เก่ากว่าด้วยงานอะซิงโครนัสใน …
21 java  android 

2
กำหนดตัวสร้างเริ่มต้นสำหรับการบันทึก
ฉันมีบันทึกและต้องการเพิ่มตัวสร้างเริ่มต้นให้กับมัน public record Record(int recordId) { public Record{ } } แต่มันสร้างตัวสร้างด้วยพารามิเตอร์ภายใน public final class Record extends java.lang.Record{ private final int recordId; public Record(int); //other method } เราจะเพิ่มนวกรรมิกเริ่มต้นในบันทึกได้อย่างไร?

1
นี่เป็นวิธีที่ถูกต้องในการแปลงถ่านให้เป็น String ใน Java หรือไม่? [ซ้ำ]
คำถามนี้มีคำตอบอยู่ที่นี่แล้ว : วิธีการแปลงถ่านให้เป็นสตริง? (11 คำตอบ) ปิด7 ชั่วโมงที่ผ่านมา ในขณะที่เขียนการทดสอบหน่วยสำหรับฟังก์ชั่นการส่งคืนbooleanที่ใช้เวลาสองStringวินาทีและฉันต้องการทดสอบอักขระทุกตัวของตัวอักษร ( 'a'- 'z') ตามลำดับเป็นหนึ่งในพารามิเตอร์หนึ่งตัวต่อหนึ่งดังนั้นฉันจึงเขียนสิ่งนี้เพื่อทำสิ่งนี้: for(char c = 'a'; c <= 'z'; c++) { assertTrue(MyClass.MyFunction(testSubject, new String(c)); } ฉันคิดว่านี่เป็นสิ่งที่อนุญาต แต่มันไม่ใช่ดังนั้นฉันจึงทำแบบนี้แทน: for(char c = 'a'; c <= 'z'; c++) { assertTrue(MyClass.MyFunction(testSubject, ((Character) c).toString()); } นี่เป็นวิธีที่เชื่อถือได้ในการแปลง a charเป็นStringin Java หรือไม่? มันเป็นวิธีที่ต้องการหรือไม่ ฉันไม่รู้มากเกี่ยวกับ Java ดังนั้นอยากจะชี้แจงเกี่ยวกับเรื่องนี้
20 java  string  character 

1
Paths.get vs Path.of
เท่าที่ฉันสามารถบอกได้Paths.getและPath.ofดูเหมือนว่าจะทำสิ่งเดียวกันเปลี่ยนสตริงหนึ่งหรือมากกว่านั้นเป็นPathวัตถุ เอกสารhttps://docs.oracle.com/javase/8/docs/api/java/nio/file/Paths.html#get-java.lang.String-java.lang.String...-และ https: //docs.oracle.com/en/java/javase/13/docs/api/java.base/java/nio/file/Path.html#of(java.lang.String,java.lang.String ... )ใช้ถ้อยคำเดียวกัน ในความเป็นจริงพวกเขาเหมือนกันหรือไม่ Path.ofถูกนำมาใช้ในภายหลัง การคาดเดา: มันถูกนำมาใช้เพื่อประโยชน์ของFoo.ofสไตล์ที่สอดคล้องกัน ในกรณีดังกล่าวจะได้รับการพิจารณาว่าเหมาะสมกว่าในความสอดคล้อง / ความงาม?
20 java  java-11 

3
การพึ่งพาการกำหนดค่าเริ่มต้นของฟิลด์เริ่มต้น - เป็นรูปแบบการเขียนโปรแกรมที่ไม่ดีใช่หรือไม่ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน7 เดือนที่ผ่านมา ฉันได้รับลิงก์ไปยังเอกสารของ oracle อย่างเป็นทางการ: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html มันบอกว่าที่ไหน: ค่าเริ่มต้น ไม่จำเป็นเสมอในการกำหนดค่าเมื่อมีการประกาศฟิลด์ ฟิลด์ที่ประกาศ แต่ไม่เริ่มต้นจะถูกตั้งค่าเริ่มต้นที่เหมาะสมโดยคอมไพเลอร์ โดยทั่วไปแล้วค่าเริ่มต้นนี้จะเป็นศูนย์หรือเป็นโมฆะทั้งนี้ขึ้นอยู่กับประเภทข้อมูล อย่างไรก็ตามการใช้ค่าเริ่มต้นนั้นถือว่าเป็นลักษณะการเขียนโปรแกรมที่ไม่ดี ฉันต้องการเน้นส่วนนี้: อย่างไรก็ตามการใช้ค่าเริ่มต้นนั้นถือว่าเป็นลักษณะการเขียนโปรแกรมที่ไม่ดี แต่นี่คือสิ่งที่ฉันจะบอกว่าเป็นส่วนพื้นฐานของข้อกำหนดภาษาที่รู้ว่าตัวแปรอินสแตนซ์มีค่าเริ่มต้น ทำไมในโลกนี้เป็นแบบฝึกหัดการเขียนโปรแกรมที่ไม่ถูกต้องถ้ามันถูกใช้อย่างกว้างขวางแม้ในซอร์สโค้ด Java SE ไลบรารี?

10
Java กับ maven จะไม่สร้าง: ไม่สามารถเรียกใช้โปรแกรม“ cmd”“ อาร์กิวเมนต์มีรูปแบบไม่ถูกต้องและมีเครื่องหมายคำพูดฝังอยู่”
ฉันติดตั้ง netbean 11.1 ใหม่ ตอนนี้ฉันกำลังพยายามสร้างโครงการ แต่ฉันได้รับผลลัพธ์ข้อผิดพลาดต่อไปนี้: ไม่สามารถเรียกใช้โปรแกรม "cmd" (ในไดเรกทอรี "C: \ projects \ open"): อาร์กิวเมนต์ที่มีรูปแบบไม่ถูกต้องมีเครื่องหมายคำพูดฝังตัวอยู่: "C: \ Program Files \ NetBeans-11.1 \ netbeans \ java \ maven \ bin \ mvn.cmd" cd C:\projects\open; "JAVA_HOME=C:\\Program Files\\Java\\jdk-11.0.5" cmd /c "\"\"C:\\Program Files\\NetBeans-11.1\\netbeans\\java\\maven\\bin\\mvn.cmd\" -DskipTests=true -Dmaven.ext.class.path=\"C:\\Program Files\\NetBeans-11.1\\netbeans\\java\\maven-nblib\\netbeans-eventspy.jar\" -Dfile.encoding=UTF-8 clean install\"" Cannot run program "cmd" (in …

3
การส่งเสริมประเภท Java ในพารามิเตอร์
ฉันสะดุดกับตัวอย่างนี้: public class ParamTest { public static void printSum(int a, double b) { System.out.println("In intDBL " + (a + b)); } public static void printSum(long a, long b) { System.out.println("In long " + (a + b)); } public static void printSum(double a, long b) { System.out.println("In doubleLONG " + (a …

2
ฉันจะข้ามการ จำกัด การโทร (หมายเลข) ด้วยสตรีมได้อย่างไรเมื่อจำนวนเท่ากับ 0
ฉันมีบางรหัส Java itemsที่ให้วัตถุจาก มัน จำกัด พวกเขาตามmaxNumber: items.stream() .map(this::myMapper) .filter(item -> item != null) .limit(maxNumber) .collect(Collectors.toList()); มันทำงานได้ดี แต่คำถามคือ: มีวิธีการข้ามข้อ จำกัด เมื่อmaxNumber == 0? ฉันรู้ว่าฉันสามารถทำสิ่งนี้: if (maxNumber == 0) { items.stream() .map(this::myMapper) .filter(item -> item != null) .collect(Collectors.toList()); } else { items.stream() .map(this::myMapper) .filter(item -> item != null) .limit(maxNumber) .collect(Collectors.toList()); } แต่บางทีอาจจะมีวิธีที่ดีกว่าไม่มีอะไรในใจของคุณ?


6
ทำไมจาวาไม่สามารถอนุมานประเภทของ super?
Numberเราทุกคนรู้ยาวยื่นออกมา เหตุใดจึงไม่รวบรวม และวิธีการกำหนดวิธีการwithเพื่อให้โปรแกรมคอมไพล์โดยไม่มีการส่งด้วยตนเองหรือไม่? import java.util.function.Function; public class Builder<T> { static public interface MyInterface { Number getNumber(); Long getLong(); } public <F extends Function<T, R>, R> Builder<T> with(F getter, R returnValue) { return null;//TODO } public static void main(String[] args) { // works: new Builder<MyInterface>().with(MyInterface::getLong, 4L); // works: new Builder<MyInterface>().with(MyInterface::getNumber, (Number) …

1
กรอบหน่วยความจำใช้ใน Java อะไร
ขณะที่พยายามที่จะเข้าใจว่าSubmissionPublisher( รหัสแหล่งที่มาใน Java SE 10 OpenJDK | เอกสาร ), คลาสใหม่เพิ่มเข้ามาใน Java SE ในรุ่นที่ 9 ได้รับการดำเนินฉัน stumbled ข้าม API โทรไม่กี่คนที่VarHandleฉันไม่ได้ก่อนหน้านี้ตระหนักถึง: fullFence, acquireFence, releaseFence, และloadLoadFencestoreStoreFence หลังจากทำวิจัยโดยเฉพาะอย่างยิ่งเกี่ยวกับแนวคิดของอุปสรรคหน่วยความจำ / รั้ว (ฉันเคยได้ยินพวกเขาก่อนหน้านี้ใช่ แต่ไม่เคยใช้พวกเขาจึงค่อนข้างไม่คุ้นเคยกับความหมายของพวกเขา) ฉันคิดว่าฉันมีความเข้าใจพื้นฐานของสิ่งที่พวกเขา . อย่างไรก็ตามเนื่องจากคำถามของฉันอาจเกิดขึ้นจากการเข้าใจผิดฉันต้องการให้แน่ใจว่าฉันได้รับมันตั้งแต่แรก: อุปสรรคหน่วยความจำกำลัง จำกัด ข้อ จำกัด ใหม่เกี่ยวกับการอ่านและการเขียน อุปสรรคหน่วยความจำสามารถแบ่งออกเป็นสองประเภทหลัก: อุปสรรคหน่วยความจำทิศทางเดียวและแบบสองทิศทางขึ้นอยู่กับว่าพวกเขาตั้งข้อ จำกัด ในการอ่านหรือเขียนหรือทั้งสองอย่าง c ++ สนับสนุนความหลากหลายของปัญหาและอุปสรรคที่หน่วยความจำVarHandleแต่เหล่านี้ไม่ตรงกับผู้ที่ให้บริการโดย แต่บางส่วนของปัญหาและอุปสรรคที่หน่วยความจำที่มีอยู่ในVarHandleให้ผลกระทบการสั่งซื้อที่มีเข้ากันได้จะสอดคล้อง c ++ อุปสรรคหน่วยความจำของพวกเขา #fullFence เข้ากันได้กับ atomic_thread_fence(memory_order_seq_cst) …

2
ลูกศร (->) ลำดับความสำคัญของผู้ประกอบการ / ลำดับความสำคัญต่ำสุดหรือลำดับความสำคัญของการมอบหมาย / การมอบหมายรวมมีค่าต่ำสุด?
JLS : ประกอบการต่ำสุดสำคัญคือลูกศรของนิพจน์แลมบ์ดา (->) , ตามโดยผู้ประกอบการที่ได้รับมอบหมาย ตามไปในทิศทางใด (เพิ่มความสำคัญลดลำดับความสำคัญ) - "ติดตาม" หมายถึงการมอบหมายมีลำดับความสำคัญสูงกว่าหรือมีลำดับความสำคัญต่ำกว่า (เกี่ยวข้องกับตัวดำเนินการลูกศร) ฉันเดาว่าเพิ่มมากขึ้นเพราะ "ต่ำสุด" (สำหรับลูกศร) หมายถึงต่ำที่สุดอย่างแน่นอน ดังที่ฉันเข้าใจแล้วลูกศร (->) ควรอยู่ที่ด้านล่างสุดของตารางตัวดำเนินการของพรินซ์ตัน (ซึ่งอยู่ต่ำกว่าตัวดำเนินการที่ได้รับมอบหมายทั้งหมด) ดังนั้นลูกศร (->) มีระดับความสำคัญ 0 (ศูนย์) (ตามตารางนั้น) ฉันถูกต้องในการทำความเข้าใจของฉัน? ExamTrayดูเหมือนจะบอกว่าลูกศรลำดับความสำคัญเป็นอย่างน้อยเช่นเดียวกับการมอบหมาย ... และชี้แจงว่าลูกศรสัมพันธ์เป็นซ้าย -> ถึง -> ขวา (ซึ่งแตกต่างจากการกำหนด) ฉันไม่พบใบเสนอราคาของ JLS สำหรับการเชื่อมโยงลูกศร ฉันมักจะคิดว่าลำดับความสำคัญของการมอบหมายนั้นต่ำที่สุดโดยมีเหตุผล

4
การใช้ CPU ต่ำเกินไปของ Java Application แบบหลายเธรดบน Windows
ฉันกำลังทำงานกับแอปพลิเคชัน Java เพื่อแก้ปัญหาการเพิ่มประสิทธิภาพเชิงตัวเลข - ปัญหาการเขียนโปรแกรมเชิงเส้นขนาดใหญ่ให้แม่นยำยิ่งขึ้น ปัญหาเดียวสามารถแบ่งออกเป็นปัญหาย่อยที่เล็กกว่าที่สามารถแก้ไขได้ในแบบคู่ขนาน เนื่องจากมีปัญหาย่อยมากกว่าคอร์ CPU ฉันจึงใช้ ExecutorService และกำหนดแต่ละปัญหาย่อยเป็น Callable ที่ได้รับการส่งไปยัง ExecutorService การแก้ปัญหาย่อยต้องเรียกไลบรารี่เนทีฟซึ่งเป็นตัวแก้ปัญหาการโปรแกรมเชิงเส้นในกรณีนี้ ปัญหา ฉันสามารถรันแอพพลิเคชั่นบน Unix และระบบ Windows ที่มีฟิสิคัลคอร์สูงสุด 44 คอร์และหน่วยความจำสูงสุด 256g แต่เวลาในการคำนวณบนวินโดวส์นั้นมีลำดับความสำคัญสูงกว่าบน Linux สำหรับปัญหาใหญ่ Windows ไม่เพียง แต่ต้องใช้หน่วยความจำเพิ่มมากขึ้น แต่การใช้งาน CPU ในช่วงเวลานั้นลดลงจาก 25% ในช่วงเริ่มต้นเป็น 5% หลังจากผ่านไปสองสามชั่วโมง นี่คือภาพหน้าจอของตัวจัดการงานใน Windows: ข้อสังเกต เวลาในการแก้ปัญหาสำหรับอินสแตนซ์ขนาดใหญ่ของปัญหาโดยรวมอยู่ในช่วงชั่วโมงต่อวันและใช้หน่วยความจำมากถึง 32 กรัม (บน Unix) เวลาแก้ปัญหาสำหรับปัญหาย่อยอยู่ในช่วง ms ฉันไม่พบปัญหานี้ในปัญหาเล็ก ๆ ที่ใช้เวลาเพียงไม่กี่นาทีในการแก้ไข …

1

1
จะรับใบรับรองไฟล์ (.android \ emulator-grpc.cer) ได้อย่างไร?
หลังจากอัปเดต Java ข้อความนี้จะปรากฏขึ้นทุกครั้งที่ฉันเรียกใช้อีมูเลเตอร์ 21:13 Emulator: emulator: WARNING: EmulatorService.cpp:448: Cannot find certfile: C:\Users\Aml\.android\emulator-grpc.cer security will be disabled. 21:13 Emulator: Started GRPC server at 127.0.0.1:8554 มีบางคนประสบปัญหานี้และฉันจะแก้ไขปัญหานี้หรือไม่?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.