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

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

9
ฉันจะจัดเรียงรายการตามพารามิเตอร์ต่างๆในเวลาที่ต่างกันได้อย่างไร
ฉันมีคลาสที่Personมีคุณสมบัติหลายอย่างเช่น: public class Person { private int id; private String name, address; // Many more properties. } Personวัตถุจำนวนมากถูกเก็บไว้ในArrayList<Person>ไฟล์. ฉันต้องการจัดเรียงรายการนี้ตามพารามิเตอร์การจัดเรียงหลายรายการและแตกต่างกันเป็นครั้งคราว ตัวอย่างเช่นครั้งหนึ่งฉันอาจต้องการเรียงลำดับจากnameน้อยไปมากแล้วจากaddressมากไปหาน้อยและอีกครั้งหนึ่งเพียงแค่จากidมากไปหาน้อย และฉันไม่ต้องการสร้างวิธีการเรียงลำดับของตัวเอง (เช่นฉันต้องการใช้Collections.sort(personList, someComparator)อะไรคือวิธีการแก้ปัญหาที่สวยงามที่สุดที่บรรลุสิ่งนี้?
95 java  sorting 

7
python มีคุณสมบัติเทียบเท่ากับ Java Class.forName () หรือไม่
ฉันมีความต้องการที่จะใช้อาร์กิวเมนต์สตริงและสร้างวัตถุของคลาสที่มีชื่อในสตริงนั้นใน Python ใน Java ฉันจะใช้Class.forName().newInstance(). มีความเท่าเทียมกันใน Python หรือไม่? ขอบคุณสำหรับคำตอบ เพื่อตอบผู้ที่ต้องการทราบว่าฉันกำลังทำอะไรอยู่: ฉันต้องการใช้อาร์กิวเมนต์บรรทัดคำสั่งเป็นชื่อคลาสและสร้างอินสแตนซ์ จริงๆแล้วฉันกำลังเขียนโปรแกรมใน Jython และสร้างอินสแตนซ์คลาส Java ด้วยเหตุนี้ Java-ness ของคำถาม getattr()ใช้งานได้ดี ขอบคุณมาก.

7
การทดสอบ JUnit พร้อมจำนวนการทดสอบแบบไดนามิก
ในโครงการของเราฉันมีการทดสอบJUnitหลายครั้งเช่นนำทุกไฟล์จากไดเร็กทอรีและรันการทดสอบ หากฉันใช้testEveryFileInDirectoryวิธีการในTestCaseนี้จะแสดงเป็นเพียงการทดสอบเดียวที่อาจล้มเหลวหรือประสบความสำเร็จ แต่ฉันสนใจผลลัพธ์ในแต่ละไฟล์ ฉันจะเขียนTestCase/ TestSuiteเพื่อให้แต่ละไฟล์แสดงเป็นการทดสอบแยกกันเช่นใน TestRunner แบบกราฟิกของ Eclipse ได้อย่างไร (การเข้ารหัสวิธีการทดสอบที่ชัดเจนสำหรับแต่ละไฟล์ไม่ใช่ตัวเลือก) เปรียบเทียบยังคำถามParameterizedTest ที่มีชื่อใน Eclipse TestRunner

4
เหตุใด JVM จึงยังไม่รองรับการเพิ่มประสิทธิภาพการโทรหาง?
สองปีหลังจากการเพิ่มประสิทธิภาพdo -the-jvm-Prevent-tail-call-optimizationsดูเหมือนว่าจะมีการนำไปใช้งานต้นแบบ และMLVMได้ระบุคุณลักษณะนี้เป็น "โปรโต 80%" ในบางครั้ง ไม่มีความสนใจอย่างแข็งขันจากฝั่งของ Sun / Oracle ในการสนับสนุนการโทรหางหรือเป็นเพียงการเรียกหางคือ "[... ] โชคชะตาที่จะมาเป็นอันดับสองในทุกรายการลำดับความสำคัญของคุณลักษณะ [... ]" ตามที่กล่าวไว้ที่JVM การประชุมสุดยอดภาษา ? ฉันจะสนใจจริงๆถ้ามีคนทดสอบบิลด์ MLVM และสามารถแบ่งปันความประทับใจว่ามันทำงานได้ดีเพียงใด (ถ้าเป็นเช่นนั้น) อัปเดต: โปรดทราบว่า VM บางตัวเช่นAvianรองรับการโทรหางที่เหมาะสมโดยไม่มีปัญหาใด ๆ

7
เหตุใดฉันจึงต้องใช้เครื่องมือสร้างเทมเพลต jsp include และ jstl vs tiles, freemarker, velocity, sitemesh
ฉันกำลังจะเลือกวิธีจัดระเบียบมุมมองของฉัน (ด้วย spring-mvc แต่ไม่น่าจะสำคัญเท่าไหร่) มี 6 ตัวเลือกเท่าที่ฉันเห็น (แม้ว่าจะไม่สามารถใช้ร่วมกันได้): กระเบื้อง Sitemesh Freemarker ความเร็ว <jsp:include> <%@ include file=".."> ไทล์และแผนผังเว็บไซต์สามารถจัดกลุ่มได้ เพื่อให้สามารถFreemarkerและความเร็ว ข้อใดในแต่ละกลุ่มที่จะใช้ไม่ใช่ประเด็นของการสนทนานี้มีคำถามและการอภิปรายเกี่ยวกับเรื่องนี้เพียงพอ นี่เป็นการอ่านที่น่าสนใจแต่ไม่สามารถโน้มน้าวให้ฉันใช้กระเบื้องได้ คำถามของฉันคือ - กรอบเหล่านี้ให้อะไรที่ไม่สามารถทำได้อย่างถูกต้อง <@ include file="..">และ JSTL ประเด็นหลัก (บางส่วนนำมาจากบทความ): การรวมบางส่วนของหน้าเช่นส่วนหัวและส่วนท้าย - ไม่มีความแตกต่างระหว่าง: <%@ include file="header.jsp" %> และ <tiles:insert page="header.jsp" /> การกำหนดพารามิเตอร์ในส่วนหัวเช่นชื่อเรื่องเมตาแท็ก ฯลฯ สิ่งนี้สำคัญมากโดยเฉพาะจากมุมมองของ SEO ด้วยตัวเลือกเทมเพลตคุณสามารถกำหนดตัวยึดตำแหน่งที่แต่ละเพจควรกำหนดได้ แต่คุณสามารถใน jsp ด้วยJSTLโดยใช้<c:set>(ในหน้ารวม) และ<c:out>(ในหน้าที่รวม) การจัดโครงสร้างใหม่ …

9
ExecutorService ที่ขัดขวางงานหลังจากหมดเวลา
ฉันกำลังมองหาการใช้งานExecutorServiceที่สามารถกำหนดระยะหมดเวลาได้ งานที่ส่งไปยัง ExecutorService ถูกขัดจังหวะหากใช้เวลานานกว่าการหมดเวลาในการรัน การใช้สัตว์ร้ายเช่นนี้ไม่ใช่เรื่องยาก แต่ฉันสงสัยว่าจะมีใครรู้ถึงการใช้งานที่มีอยู่หรือไม่ นี่คือสิ่งที่ฉันคิดขึ้นจากการสนทนาด้านล่าง มีคำแนะนำอะไรมั้ย? import java.util.List; import java.util.concurrent.*; public class TimeoutThreadPoolExecutor extends ThreadPoolExecutor { private final long timeout; private final TimeUnit timeoutUnit; private final ScheduledExecutorService timeoutExecutor = Executors.newSingleThreadScheduledExecutor(); private final ConcurrentMap<Runnable, ScheduledFuture> runningTasks = new ConcurrentHashMap<Runnable, ScheduledFuture>(); public TimeoutThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, …

7
วิธีตั้งค่าตัวแปรสภาพแวดล้อมหรือคุณสมบัติของระบบในการทดสอบสปริง
ฉันต้องการเขียนการทดสอบบางอย่างที่ตรวจสอบการกำหนดค่า XML Spring ของ WAR ที่ปรับใช้ น่าเสียดายที่ถั่วบางชนิดต้องการให้มีการตั้งค่าตัวแปรสภาพแวดล้อมหรือคุณสมบัติของระบบ ฉันจะตั้งค่าตัวแปรสภาพแวดล้อมก่อนที่ถั่วสปริงจะเริ่มต้นได้อย่างไรเมื่อใช้รูปแบบการทดสอบที่สะดวกกับ @ContextConfiguration @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:whereever/context.xml") public class TestWarSpringContext { ... } หากฉันกำหนดค่าบริบทของแอปพลิเคชันด้วยคำอธิบายประกอบฉันไม่เห็นจุดเชื่อมต่อที่ฉันสามารถทำอะไรบางอย่างได้ก่อนที่บริบทสปริงจะเริ่มต้น

14
วิธีการแปลงไบต์เป็นการแสดงสตริงไบนารี
ยกตัวอย่างเช่นบิตในไบต์ที่Bมี10000010วิธีการที่ฉันสามารถกำหนดบิตสตริงตัวอักษรที่เป็นstrstr = "10000010" แก้ไข Bผมอ่านไบต์จากไฟล์ไบนารีและเก็บไว้ในอาร์เรย์ไบต์ ฉันใช้System.out.println(Integer.toBinaryString(B[i])). ปัญหาคือ (a) เมื่อบิตเริ่มต้นด้วย (ซ้ายสุด) 1 เอาต์พุตไม่ถูกต้องเนื่องจากแปลงB[i]เป็นค่า int เชิงลบ (b) ถ้าบิตเริ่มต้นด้วย0เอาต์พุตจะละเว้น0เช่นสมมติว่าB[0]มี 00000001 เอาต์พุตจะถูก1แทนที่ด้วย00000001
95 java  binary  byte 

4
Java: <init> และ <clinit> ต่างกันอย่างไร
ฉันไม่เข้าใจข้อความต่อไปนี้ ... หมายความว่า&lt;clinit&gt;มีไว้สำหรับตัวสร้างที่ว่างเปล่า? เหตุใดจึงสำคัญที่ต้องมีสองเวอร์ชันที่แตกต่างกัน https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html 2.9. Special Methods ในระดับของเครื่องเสมือน Java ทุกคอนสตรัค (§2.12) &lt;init&gt;จะปรากฏขึ้นเป็นวิธีการเริ่มต้นอินสแตนซ์ที่มีชื่อพิเศษ ชื่อนี้จัดทำโดยคอมไพเลอร์ เนื่องจากชื่อ&lt;init&gt;ไม่ใช่ตัวระบุที่ถูกต้องจึงไม่สามารถใช้โดยตรงในโปรแกรมที่เขียนด้วยภาษาโปรแกรม Java วิธีการเริ่มต้นอินสแตนซ์อาจถูกเรียกใช้เฉพาะภายในเครื่องเสมือน Java โดยคำสั่ง invokespecial และอาจถูกเรียกใช้บนอินสแตนซ์คลาสที่ไม่ได้กำหนดค่าเริ่มต้นเท่านั้น วิธีการเริ่มต้นอินสแตนซ์ใช้สิทธิ์การเข้าถึง (§2.7.4) ของตัวสร้างที่ได้รับมา คลาสหรืออินเทอร์เฟซมีเมธอดการเตรียมใช้งานคลาสหรืออินเตอร์เฟสไม่เกินหนึ่งคลาสและเริ่มต้น (§2.17.4) โดยเรียกใช้เมธอดนั้น วิธีการเริ่มต้นของคลาสหรืออินเทอร์เฟซเป็นแบบคงที่และไม่มีข้อโต้แย้ง &lt;clinit&gt;มันมีชื่อพิเศษ ชื่อนี้จัดทำโดยคอมไพเลอร์ เนื่องจากชื่อ&lt;clinit&gt;ไม่ใช่ตัวระบุที่ถูกต้องจึงไม่สามารถใช้โดยตรงในโปรแกรมที่เขียนด้วยภาษาโปรแกรม Java วิธีการเริ่มต้นคลาสและอินเตอร์เฟสถูกเรียกใช้โดยปริยายโดยเครื่องเสมือน Java พวกเขาจะไม่ถูกเรียกโดยตรงจาก inw2struction เครื่องเสมือน Java ใด ๆ แต่จะถูกเรียกโดยทางอ้อมเท่านั้นซึ่งเป็นส่วนหนึ่งของกระบวนการเริ่มต้นคลาส
95 java  jvm 

4
Java เทียบเท่ากับพจนานุกรม Python
ฉันเป็นผู้ใช้ Python มาเป็นเวลานานและชอบวิธีการใช้พจนานุกรมมาก ใช้งานง่ายมากและใช้งานง่าย มี Java ที่ดีเทียบเท่ากับพจนานุกรมของ python หรือไม่? ฉันเคยได้ยินว่ามีคนใช้แฮชแมปและแฮชแท็ก ใครช่วยอธิบายความเหมือนและความแตกต่างของการใช้แฮชแท็กและแฮชแมปกับพจนานุกรมของ python ได้ไหม
95 java  python  hash  dictionary 

5
อะไรคือความแตกต่างระหว่าง Jersey vs Jax-rs
ฉันไม่เข้าใจเลยว่าจริงๆแล้วเสื้อคืออะไร .. สิ่งที่ฉันรู้ก็คือ Jax-RS เป็น API สำหรับสร้างบริการเว็บ REST และเจอร์ซี? ฉันได้รับข้อมูลบางอย่างและทุกคนก็พูดเหมือนกันว่า "เสื้อคือการนำ Jax-RS มาใช้" แต่มันหมายความว่าอย่างไร? ถ้า jax-rs เป็น API ทำไมเราต้องใช้เจอร์ซีย์เพื่อสร้างบริการเว็บที่เหลือ? เจอร์ซีย์เป็น libs อีกสองสามตัวที่จะเล็งกับ jax-rs หรือไม่? ถ้าใช่ jax-rs เป็น API ที่ไม่สมบูรณ์?
95 java  jersey  jax-rs 

3
OSGi, Java Modularity และ Jigsaw
เมื่อเช้าวานนี้ฉันไม่ทราบว่า OSGi เป็นอย่างไร OSGiเป็นเพียงคำศัพท์ที่ฉันเห็นการครอบตัดซ้ำแล้วซ้ำเล่าและในที่สุดฉันก็เผื่อเวลาไว้สักพัก ดูเหมือนจะเป็นเรื่องที่น่าสนใจจริงๆดังนั้นฉันจึงขอเริ่มต้นด้วยการระบุ (สำหรับบันทึก) ว่าฉันไม่ได้ต่อต้าน OSGi ในแง่ใด ๆ และนี่ก็ไม่ใช่คำถาม "OSGi-bashing" ในตอนท้ายของวันดูเหมือนว่า OSGi ได้กล่าวถึงJSR 277บน Java Modularity ซึ่งเป็นที่ยอมรับว่ามีข้อบกพร่องเกี่ยวกับJARข้อกำหนดไฟล์ที่อาจนำไปสู่ความละเอียดของเนมสเปซและปัญหาการโหลดคลาสในบางกรณี OSGi ยังทำสิ่งดีๆอื่น ๆ อีกมากมาย แต่จากสิ่งที่ฉันสามารถตรวจสอบได้นั่นคือสิ่งที่ดึงดูดความสนใจมากที่สุด (หรือหนึ่งในนั้น) สำหรับฉัน - ในฐานะผู้พัฒนา Java EE ที่ค่อนข้างใหม่ (ไม่กี่ปีนี้) เป็นเรื่องที่น่าเหลือเชื่ออย่างยิ่งที่เราอยู่ในปี 2011 และปัจจุบันอาศัยอยู่ในยุคของ Java 7 และปัญหาการโหลดคลาสเหล่านี้ยังคงมีอยู่ โดยเฉพาะอย่างยิ่งในสภาพแวดล้อมขององค์กรที่เซิร์ฟเวอร์แอปหนึ่งสามารถมี JAR ได้หลายร้อยตัวโดยหลายตัวขึ้นอยู่กับเวอร์ชันที่แตกต่างกันและทั้งหมดทำงานพร้อมกัน (มากหรือน้อย) คำถามของฉัน: ในฐานะที่ฉันสนใจใน OSGi และฉันก็อยากจะเริ่มเรียนรู้เกี่ยวกับเรื่องนี้มากที่สุดเพื่อดูว่ามันสามารถนำไปใช้กับโปรเจ็กต์ของฉันได้ที่ไหน / ถ้าฉันไม่มีเวลานั่งลงและเรียนรู้บางสิ่งที่ใหญ่ขนาดนั้น อย่างน้อยก็ตอนนี้ แล้วนักพัฒนาที่ไม่ใช่ …

7
ตัวแปรคงที่ใช้ร่วมกันระหว่างเธรดหรือไม่
ครูของฉันในคลาส Java ระดับสูงเกี่ยวกับเธรดพูดบางอย่างที่ฉันไม่แน่ใจ เขาระบุว่าโค้ดต่อไปนี้ไม่จำเป็นต้องอัพเดตreadyตัวแปร ตามที่เขาพูดทั้งสองเธรดไม่จำเป็นต้องแชร์ตัวแปรคงที่โดยเฉพาะในกรณีที่แต่ละเธรด (เธรดหลักเทียบกับReaderThread) กำลังทำงานบนโปรเซสเซอร์ของตัวเองดังนั้นจึงไม่แชร์รีจิสเตอร์ / แคช / ฯลฯ เดียวกันและซีพียูตัวเดียว จะไม่อัปเดตอื่น ๆ โดยพื้นฐานแล้วเขากล่าวว่าเป็นไปได้ที่readyจะมีการอัปเดตในเธรดหลัก แต่ไม่ใช่ในเธรดReaderThreadดังนั้นสิ่งนั้นReaderThreadจะวนซ้ำไปเรื่อย ๆ นอกจากนี้เขายังอ้างว่าเป็นไปได้ที่โปรแกรมจะพิมพ์0หรือ42. ผมเข้าใจว่า42อาจจะมีการพิมพ์ 0แต่ไม่ เขากล่าวถึงกรณีนี้เมื่อnumberตัวแปรถูกตั้งค่าเป็นค่าเริ่มต้น ฉันคิดว่าบางทีไม่สามารถรับประกันได้ว่าตัวแปรคงที่ถูกอัพเดตระหว่างเธรด แต่สิ่งนี้ทำให้ฉันแปลกมากสำหรับ Java การreadyระเหยสามารถแก้ไขปัญหานี้ได้หรือไม่? เขาแสดงรหัสนี้: public class NoVisibility { private static boolean ready; private static int number; private static class ReaderThread extends Thread { public void run() { while …


8
ฉันจะรับ java.io.InputStream จาก java.lang.String ได้อย่างไร
ฉันมีStringที่ฉันต้องการใช้เป็นInputStreamไฟล์. ใน Java 1.0 คุณสามารถใช้ได้java.io.StringBufferInputStreamแต่นั่นเป็น@Deprecrated(ด้วยเหตุผลที่ดี - คุณไม่สามารถระบุการเข้ารหัสชุดอักขระได้): คลาสนี้แปลงอักขระเป็นไบต์ไม่ถูกต้อง สำหรับ JDK 1.1 วิธีที่ต้องการในการสร้างสตรีมจากสตริงคือผ่านStringReader คลาส คุณสามารถสร้างjava.io.Readerด้วยjava.io.StringReaderแต่ไม่มีอะแดปเตอร์ที่จะใช้Readerและสร้างInputStreamไฟล์. ฉันพบแมงโบราณขอให้มีการเปลี่ยนทดแทนที่เหมาะสม แต่ไม่มีสิ่งนั้นอยู่ - เท่าที่ฉันสามารถบอกได้ วิธีแก้ปัญหาที่แนะนำบ่อย ๆ คือใช้java.lang.String.getBytes()เป็นข้อมูลเข้าjava.io.ByteArrayInputStream: public InputStream createInputStream(String s, String charset) throws java.io.UnsupportedEncodingException { return new ByteArrayInputStream(s.getBytes(charset)); } แต่นั่นหมายถึงการทำให้ข้อมูลทั้งหมดStringในหน่วยความจำกลายเป็นอาร์เรย์ของไบต์และเอาชนะจุดประสงค์ของสตรีม ในกรณีส่วนใหญ่นี่ไม่ใช่เรื่องใหญ่ แต่ฉันกำลังมองหาสิ่งที่จะรักษาจุดประสงค์ของสตรีม - ข้อมูลที่มีเพียงเล็กน้อยที่สุดเท่าที่จะเป็นไปได้คือ (re) ปรากฏในหน่วยความจำ

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