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

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

2
ทำการลาก (อ้างอิงจากพิกัดเมาส์ X และ Y) บน Android โดยใช้ AccessibilityService อย่างไร
ฉันต้องการรู้วิธีลาก Android บนพิกัด X, Y ของเมาส์หรือไม่ พิจารณาว่าเป็นสองตัวอย่างง่ายๆ Team Viewer / QuickSupport วาด "รูปแบบรหัสผ่าน" บนสมาร์ทโฟนระยะไกลและ Pen of Windows Paint ตามลำดับ สิ่งที่ฉันสามารถทำได้คือการจำลองการสัมผัส (ด้วยdispatchGesture()และยังAccessibilityNodeInfo.ACTION_CLICK) ฉันพบลิงค์ที่เกี่ยวข้องเหล่านี้ แต่ไม่ทราบว่าจะมีประโยชน์หรือไม่: ดำเนินการปัดบนหน้าจอโดยใช้ AccessibilityService ตัวอย่างที่ 1 ท่าทางต่อเนื่อง ด้านล่างเป็นรหัสการทำงานของฉันที่ใช้ในการส่งพิกัดเมาส์ (ภายในPictureBoxการควบคุม) ไปยังโทรศัพท์ระยะไกลและจำลองการสัมผัส แอปพลิเคชันฟอร์ม Windows: private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { foreach (ListViewItem item in lvConnections.SelectedItems) { // Remote screen resolution …

6
รหัสแฮชของ ArrayList ที่มีตัวมันเองเป็นองค์ประกอบ
เราสามารถหาhashcodeของlistที่มีตัวมันเองเป็นelement? ฉันรู้ว่านี่เป็นวิธีปฏิบัติที่ไม่ดี แต่นี่คือสิ่งที่ผู้สัมภาษณ์ถาม เมื่อฉันรันรหัสต่อไปนี้มันจะพ่น a StackOverflowError: public class Main { public static void main(String args[]) { ArrayList<ArrayList> a = new ArrayList(); a.add(a); a.hashCode(); } } ตอนนี้ที่นี่ฉันมีสองคำถาม: ทำไมถึงมีStackOverflowError? เป็นไปได้ไหมที่จะหารหัสแฮชด้วยวิธีนี้

4
ทำไมแลมบ์ดาส่งคืนชนิดไม่ตรวจสอบในเวลารวบรวม?
Integerอ้างอิงวิธีการที่ใช้มีชนิดกลับ แต่ไม่สามารถใช้ร่วมกันStringได้ในตัวอย่างต่อไปนี้ วิธีแก้ไขการwithประกาศวิธีการเพื่อให้ได้รับการอ้างอิงประเภทวิธีการที่ปลอดภัยโดยไม่ต้องหล่อด้วยตนเอง? import java.util.function.Function; public class MinimalExample { static public class Builder<T> { final Class<T> clazz; Builder(Class<T> clazz) { this.clazz = clazz; } static <T> Builder<T> of(Class<T> clazz) { return new Builder<T>(clazz); } <R> Builder<T> with(Function<T, R> getter, R returnValue) { return null; //TODO } } static public interface …

3
การดำเนินการสตรีมระดับกลางไม่ได้รับการประเมินตามจำนวน
ดูเหมือนว่าฉันมีปัญหาในการเข้าใจวิธีที่ Java รวบรวมการดำเนินการในการสตรีมไปป์ไลน์ เมื่อรันโค้ดต่อไปนี้ public static void main(String[] args) { StringBuilder sb = new StringBuilder(); var count = Stream.of(new String[]{"1", "2", "3", "4"}) .map(sb::append) .count(); System.out.println(count); System.out.println(sb.toString()); } 4คอนโซลเพียงพิมพ์ StringBuilderวัตถุยังคงมีค่า""วัตถุยังคงมีค่า เมื่อฉันเพิ่มการดำเนินการตัวกรอง: filter(s -> true) public static void main(String[] args) { StringBuilder sb = new StringBuilder(); var count = Stream.of(new String[]{"1", …
33 java  java-stream 

6
คุณควรยืนยันว่าไม่ได้เป็นโมฆะกับคำสั่งยืนยันในรหัสการผลิต? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดเมื่อเดือนที่แล้ว ฉันเคยเห็นคำถามนี้แต่มีคำถามอีกสองสามข้อเกี่ยวกับการใช้assertคำหลัก ผมได้รับการโต้วาทีกับ coders อื่น ๆ assertน้อยเกี่ยวกับการใช้ สำหรับกรณีการใช้งานนี้มีวิธีการที่สามารถคืนค่า Null ได้หากตรงตามข้อกำหนดเบื้องต้นบางประการ รหัสที่ฉันเขียนเรียกวิธีการนั้นยืนยันว่ามันจะไม่คืนค่าว่างเปล่าและยังคงใช้วัตถุที่ส่งคืน ตัวอย่าง: class CustomObject { private Object object; @Nullable public Object getObject() { return (object == null) ? generateObject() : object; } } ตอนนี้คิดว่าฉันใช้มันเช่นนี้: public void useObject(CustomObject customObject) { object = customObject.getObject(); assert object != …
32 java  assert  nullable 

4
ความแตกต่างระหว่าง <คืออะไร ขยายฐาน> และ <T ขยายฐาน>?
ในตัวอย่างนี้: import java.util.*; public class Example { static void doesntCompile(Map&lt;Integer, List&lt;? extends Number&gt;&gt; map) {} static &lt;T extends Number&gt; void compiles(Map&lt;Integer, List&lt;T&gt;&gt; map) {} static void function(List&lt;? extends Number&gt; outer) { doesntCompile(new HashMap&lt;Integer, List&lt;Integer&gt;&gt;()); compiles(new HashMap&lt;Integer, List&lt;Integer&gt;&gt;()); } } doesntCompile() ไม่สามารถคอมไพล์ด้วย: Example.java:9: error: incompatible types: HashMap&lt;Integer,List&lt;Integer&gt;&gt; cannot be converted to …

1
ไม่คาดหมายเวลาทำงานสำหรับรหัส HashSet
ตอนแรกฉันมีรหัสนี้: import java.util.*; public class sandbox { public static void main(String[] args) { HashSet&lt;Integer&gt; hashSet = new HashSet&lt;&gt;(); for (int i = 0; i &lt; 100_000; i++) { hashSet.add(i); } long start = System.currentTimeMillis(); for (int i = 0; i &lt; 100_000; i++) { for (Integer val : hashSet) { …

5
ฉันจะหลีกเลี่ยงการทำซ้ำรหัสเริ่มต้น hashmap ของ hashmap ได้อย่างไร
ลูกค้าทุกคนมีรหัสและใบแจ้งหนี้จำนวนมากที่มีวันที่เก็บไว้เป็น Hashmap ของลูกค้าโดย id ของ hashmap ของใบแจ้งหนี้ตามวันที่: HashMap&lt;LocalDateTime, Invoice&gt; allInvoices = allInvoicesAllClients.get(id); if(allInvoices!=null){ allInvoices.put(date, invoice); //&lt;---REPEATED CODE }else{ allInvoices = new HashMap&lt;&gt;(); allInvoices.put(date, invoice); //&lt;---REPEATED CODE allInvoicesAllClients.put(id, allInvoices); } โซลูชัน Java ดูเหมือนว่าจะใช้getOrDefault: HashMap&lt;LocalDateTime, Invoice&gt; allInvoices = allInvoicesAllClients.getOrDefault( id, new HashMap&lt;LocalDateTime, Invoice&gt; (){{ put(date, invoice); }} ); แต่ถ้ารับไม่เป็นโมฆะฉันยังต้องการใส่ (วันที่ใบแจ้งหนี้) เพื่อดำเนินการและเพิ่มข้อมูลไปที่ "allInvoicesAllClients" …
27 java  java-8  hashmap 

1
ไม่มี metafactory วิธีการคงที่
ฉันมีปัญหากับแอพของฉันเมื่อฉันเข้าสู่ระบบแอพขัดข้องและฉันได้รับข้อผิดพลาด: java.lang.NoSuchMethodError: No static method metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; in class Ljava/lang/invoke/LambdaMetafactory; or its super classes (declaration of 'java.lang.invoke.LambdaMetafactory' appears in /apex/com.android.runtime/javalib/core-oj.jar) at okhttp3.internal.Util.&lt;clinit&gt;(Util.java:87) at okhttp3.internal.Util.skipLeadingAsciiWhitespace(Util.java:321) at okhttp3.HttpUrl$Builder.parse(HttpUrl.java:1313) at okhttp3.HttpUrl.get(HttpUrl.java:917) at retrofit2.Retrofit$Builder.baseUrl(Retrofit.java:492) at com.example.usub.Remote.RetrofitClient.getClient(RetrofitClient.java:14) at com.example.usub.Common.Common.getGoogleAPI(Common.java:10) at com.example.usub.Welcome.onCreate(Welcome.java:208) at android.app.Activity.performCreate(Activity.java:7825) at android.app.Activity.performCreate(Activity.java:7814) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at …
26 java  android 

4
จำเป็นต้องยกเลิกการทำกล่องอัตโนมัติของบุคคลที่สามถ้าอื่น
รหัสชิ้นนี้ทำงานได้ดี: - Integer nullInt = null; if (1 &lt;= 3) { Integer secondNull = nullInt; } else { Integer secondNull = -1; } System.out.println("done"); แต่สิ่งนี้จะทำให้เกิดข้อยกเว้นตัวชี้โมฆะในขณะที่ Eclipse เตือนว่าไม่จำเป็นต้องทำการแกะกล่องโดยอัตโนมัติ: - Integer nullInt = null; Integer secondNull = 1 &lt;= 3 ? nullInt : -1; System.out.println("done"); ทำไมถึงเป็นเช่นนั้นใครบางคนสามารถนำทางได้โปรด

5
แอปพลิเคชั่นช้า JVM บ่อยครั้งค้างด้วยการตั้งค่า CPU เดี่ยวและ Java 12+
เรามีแอปพลิเคชันไคลเอนต์ (พร้อมการพัฒนามากกว่า 10 ปี) JDK มันถูกอัพเกรดจาก OpenJDK 11 เป็น OpenJDK 14 เมื่อเร็ว ๆ นี้ ใน CPU ตัวเดียว (ปิดการใช้งานไฮเปอร์เธรด) การตั้งค่า Windows 10 (และภายในเครื่อง VirtualBox ที่มี CPU เพียงตัวเดียวเท่านั้น) แอปพลิเคชั่นเริ่มช้าลงเมื่อเทียบกับ Java 11 นอกจากนี้ยังใช้ CPU 100% เกือบตลอดเวลา เราสามารถสร้างปัญหาขึ้นมาใหม่ได้ด้วยการตั้งค่าความสัมพันธ์ของตัวประมวลผลให้มีเพียงหนึ่ง CPU (c:\windows\system32\cmd.exe /C start /affinity 1 ... ) การวัดบางอย่างด้วยการเริ่มต้นแอปพลิเคชันและทำแบบสอบถามด้วยการโต้ตอบด้วยตนเองน้อยที่สุดในเครื่อง VirtualBox ของฉัน: OpenJDK 11.0.2: 36 วินาที OpenJDK …
23 java  hang  java-14 

1
เหตุใดจึงไม่ลบ TreeSet ที่มีเครื่องมือเปรียบเทียบที่กำหนดเองเอารายการที่ใหญ่กว่าออก
ใช้ทั้ง Java 8 และ Java 11 ให้พิจารณาสิ่งต่อไปนี้TreeSetกับตัวString::compareToIgnoreCaseเปรียบเทียบ: final Set&lt;String&gt; languages = new TreeSet&lt;&gt;(String::compareToIgnoreCase); languages.add("java"); languages.add("c++"); languages.add("python"); System.out.println(languages); // [c++, java, python] เมื่อฉันพยายามที่จะลบองค์ประกอบที่แน่นอนที่มีอยู่ในTreeSetมันทำงาน: ทั้งหมดที่ระบุจะถูกลบออก: languages.removeAll(Arrays.asList("PYTHON", "C++")); System.out.println(languages); // [java] แต่ถ้าฉันพยายามที่จะเอาแทนมากขึ้นกว่าที่มีอยู่ในTreeSetโทรไม่เอาอะไรเลย (นี้ไม่โทรตามมา แต่เรียกแทนของตัวอย่างด้านบน): languages.removeAll(Arrays.asList("PYTHON", "C++", "LISP")); System.out.println(languages); // [c++, java, python] ผมทำอะไรผิดหรือเปล่า? ทำไมมันทำเช่นนี้? แก้ไข: String::compareToIgnoreCaseเป็นตัวเปรียบเทียบที่ถูกต้อง: (l, r) -&gt; l.compareToIgnoreCase(r)

3
ตัวเลือก java.security.egd นั้นใช้ทำอะไร
ในโครงการที่ฉันกำลังดำเนินการแอปพลิเคชันจะเปิดตัวโดยใช้คำสั่งที่คล้ายกับสิ่งนี้: java -Djava.security.egd=file:/dev/urandom -jar app.jar ฉันไม่เคยเห็นjava.security.egdตัวเลือกมาก่อน ดูเหมือนว่าจะใช้การกำหนดค่าการสร้างตัวเลขสุ่มในแอปพลิเคชัน Java ถูกต้องหรือไม่ ควรใช้เมื่อใด
22 java  jvm 

7
จะสร้างตัวโหลดพื้นหลังบล็อกใน Java 8 ได้อย่างไร?
คำถาม คุณสร้างตัวโหลดพื้นหลังที่เหมาะสมใน Java 8 ได้อย่างไร? เงื่อนไข: ควรโหลดข้อมูลในพื้นหลัง หลังจากการโหลดข้อมูลควรจะปรากฏขึ้น ในขณะที่โหลดข้อมูลไม่จำเป็นต้องยอมรับคำขอใด ๆ เพิ่มเติม หากมีการร้องขอในขณะที่ข้อมูลถูกโหลดอีกครั้งการโหลดควรกำหนดเวลาหลังจากหมดเวลาที่แน่นอน (เช่น 5 วินาที) จุดประสงค์คือเพื่อรับคำขอโหลดซ้ำ แต่ไม่ใช่ฐานข้อมูลที่เต็มไปด้วยคำขอ MCVE นี่คือ MCVE ประกอบด้วยงานพื้นหลังซึ่งจำลองการโหลดโดยเรียกใช้ Thread.sleep เป็นเวลา 2 วินาที งานถูกกำหนดเวลาไว้ทุก ๆ วินาทีซึ่งโดยธรรมชาติจะนำไปสู่การทับซ้อนของงานโหลดพื้นหลังซึ่งควรหลีกเลี่ยง public class LoadInBackgroundExample { /** * A simple background task which should perform the data loading operation. In this minimal example it …

1
พร็อกซีที่ถูกกำหนดขอบเขตใน Spring คืออะไร
ดังที่เราทราบ Spring ใช้พร็อกซีเพื่อเพิ่มฟังก์ชันการทำงาน ( @Transactionalและ@Scheduledตัวอย่าง) มีสองตัวเลือก - การใช้ JDK ไดนามิกพร็อกซี่ (คลาสต้องใช้อินเตอร์เฟสที่ไม่ว่าง) หรือสร้างคลาสย่อยโดยใช้ตัวสร้างโค้ด CGLIB ฉันคิดเสมอว่า proxyMode ช่วยให้ฉันสามารถเลือกระหว่าง JDK dynamic proxy และ CGLIB แต่ฉันสามารถสร้างตัวอย่างที่แสดงว่าข้อสันนิษฐานของฉันไม่ถูกต้อง: กรณีที่ 1: ซิงเกิล: @Service public class MyBeanA { @Autowired private MyBeanB myBeanB; public void foo() { System.out.println(myBeanB.getCounter()); } public MyBeanB getMyBeanB() { return myBeanB; } } ต้นแบบ: @Service …

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