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

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

29
ฉันจะอธิบายความแตกต่างระหว่างอินเทอร์เฟซกับคลาสนามธรรมได้อย่างไร
ในตอนหนึ่งของการสัมภาษณ์ของฉันฉันได้รับการถามเพื่ออธิบายความแตกต่างระหว่างนั้นอินเตอร์เฟซและระดับนามธรรม นี่คือคำตอบของฉัน: วิธีการของอินเทอร์เฟซ Java เป็นนามธรรมโดยปริยายและไม่สามารถใช้งานได้ คลาสนามธรรม Java สามารถมีวิธีการอินสแตนซ์ที่ดำเนินพฤติกรรมเริ่มต้น ตัวแปรที่ประกาศในอินเตอร์เฟส Java นั้นเป็นค่าเริ่มต้นสุดท้าย คลาสนามธรรมอาจมีตัวแปรที่ไม่สิ้นสุด สมาชิกของส่วนต่อประสาน Java เป็นสาธารณะโดยค่าเริ่มต้น คลาสนามธรรมของ Java สามารถมีสมาชิกคลาสได้ตามปกติเช่นส่วนตัวมีการป้องกัน ฯลฯ อินเทอร์เฟซ Java ควรใช้งานโดยใช้คำหลัก“ ดำเนินการ”; คลาสนามธรรมของ Java ควรถูกขยายโดยใช้คีย์เวิร์ด“ extends” อินเตอร์เฟสสามารถขยายอินเตอร์เฟส Java อื่นได้เท่านั้นคลาสนามธรรมสามารถขยายคลาส Java อื่นและใช้อินเตอร์เฟส Java หลายอินเตอร์เฟส คลาส Java สามารถใช้หลายอินเตอร์เฟส แต่สามารถขยายคลาสนามธรรมเพียงคลาสเดียวเท่านั้น อย่างไรก็ตามผู้สัมภาษณ์ไม่พอใจและบอกฉันว่าคำอธิบายนี้เป็นตัวแทนของ " ความรู้เกี่ยวกับหนอนหนังสือ " เขาถามฉันสำหรับการตอบสนองการปฏิบัติมากขึ้นอธิบายเมื่อฉันจะเลือกระดับนามธรรมมากกว่าอินเตอร์เฟซที่ใช้ตัวอย่างการปฏิบัติ ฉันไปผิดที่ไหน

7
วิธีแปลง iterator เป็นสตรีม
ฉันกำลังมองหาวิธีที่กระชับในการแปลงIteratorเป็นStreamหรือมากกว่าโดยเฉพาะเพื่อ "ดู" ตัววนซ้ำเป็นสตรีม เพื่อเหตุผลด้านประสิทธิภาพฉันต้องการหลีกเลี่ยงสำเนาตัววนซ้ำในรายการใหม่: Iterator<String> sourceIterator = Arrays.asList("A", "B", "C").iterator(); Collection<String> copyList = new ArrayList<String>(); sourceIterator.forEachRemaining(copyList::add); Stream<String> targetStream = copyList.stream(); จากคำแนะนำในความคิดเห็นฉันได้ลองใช้Stream.generate: public static void main(String[] args) throws Exception { Iterator<String> sourceIterator = Arrays.asList("A", "B", "C").iterator(); Stream<String> targetStream = Stream.generate(sourceIterator::next); targetStream.forEach(System.out::println); } อย่างไรก็ตามฉันได้รับNoSuchElementException(เนื่องจากไม่มีการร้องขอhasNext) Exception in thread "main" java.util.NoSuchElementException at java.util.AbstractList$Itr.next(AbstractList.java:364) at …
468 java  iterator  java-8 

30
ย้อนกลับสตริงใน Java
ฉันได้เก็บไว้ในตัวแปรสตริงชื่อ"Hello World"hi ฉันต้องการพิมพ์ แต่กลับด้าน ฉันจะทำสิ่งนี้ได้อย่างไร ฉันเข้าใจว่ามีฟังก์ชั่นบางอย่างที่มีอยู่แล้วใน Java ที่ทำเช่นนั้น ที่เกี่ยวข้อง: ย้อนกลับคำแต่ละคำของสตริง“ Hello World” ด้วย Java
467 java  string 

18
เปลี่ยนรูปแบบวันที่ในสตริง Java
ฉันเป็นStringตัวแทนของวันที่ String date_s = "2011-01-18 00:00:00.0"; ฉันต้องการแปลงเป็น a Dateและส่งออกในYYYY-MM-DDรูปแบบ 2011/01/18 ฉันจะบรรลุสิ่งนี้ได้อย่างไร ตกลงตามคำตอบที่ฉันค้นคืนด้านล่างนี่คือสิ่งที่ฉันได้ลอง: String date_s = " 2011-01-18 00:00:00.0"; SimpleDateFormat dt = new SimpleDateFormat("yyyyy-mm-dd hh:mm:ss"); Date date = dt.parse(date_s); SimpleDateFormat dt1 = new SimpleDateFormat("yyyyy-mm-dd"); System.out.println(dt1.format(date)); แต่มันจะออกผลลัพธ์แทนที่ต้องการ02011-00-1 2011-01-18ผมทำอะไรผิดหรือเปล่า?

8
Java 8 Iterable.forEach () vs foreach loop
ตั้งค่าใหม่ตั้งค่าStack Overflow เป็นภาษาอังกฤษ : Цикл foreach против Iterable.foreach ใน Java 8: чтолучше? ข้อใดต่อไปนี้เป็นแนวทางปฏิบัติที่ดีกว่าใน Java 8 Java 8: joins.forEach(join -> mIrc.join(mSession, join)); Java 7: for (String join : joins) { mIrc.join(mSession, join); } ฉันมีลูปมากมายที่สามารถ "ทำให้ง่ายขึ้น" กับ lambdas แต่มีข้อได้เปรียบอะไรบ้างจากการใช้มัน? มันจะปรับปรุงประสิทธิภาพและความสามารถในการอ่านได้ไหม? แก้ไข ฉันจะขยายคำถามนี้ไปยังวิธีการที่ยาวขึ้น ฉันรู้ว่าคุณไม่สามารถส่งคืนหรือทำลายฟังก์ชั่นหลักจากแลมบ์ดาได้และสิ่งนี้ควรนำมาพิจารณาด้วยเมื่อเปรียบเทียบมัน แต่มีอะไรอีกที่ต้องพิจารณาอีกหรือไม่

9
Java Class ที่ใช้ Map และเก็บคำสั่งแทรก?
ฉันกำลังมองหาคลาสในจาวาที่มีการเชื่อมโยงค่าคีย์ แต่ไม่ต้องใช้แฮช นี่คือสิ่งที่ฉันกำลังทำอยู่: Hashtableเพิ่มค่าไป รับ iterator สำหรับ Hashtable.entrySet()ๆ ทำซ้ำผ่านค่าทั้งหมดและ: รับMap.Entryตัววนซ้ำ สร้างออบเจ็กต์ประเภทModule(คลาสที่กำหนดเอง) ตามค่า เพิ่มคลาสลงใน JPanel แสดงแผง ปัญหาเกี่ยวกับสิ่งนี้คือฉันไม่สามารถควบคุมลำดับที่ฉันได้รับค่ากลับมาดังนั้นฉันจึงไม่สามารถแสดงค่าในลำดับที่กำหนดได้ (โดยไม่มีการเข้ารหัสลำดับที่ยาก) ฉันจะใช้ArrayListหรือVectorนี้ แต่ในภายหลังในรหัสที่ฉันต้องการที่จะคว้าModuleวัตถุสำหรับคีย์ที่กำหนดซึ่งผมไม่สามารถทำอะไรกับหรือArrayListVector ไม่มีใครรู้ว่ามีคลาส Java อิสระ / โอเพนซอร์สที่จะทำเช่นนี้หรือวิธีการรับค่าออกมาจากHashtableเมื่อพวกเขาถูกเพิ่ม? ขอบคุณ!



2
แนวปฏิบัติที่เหมาะสมที่สุดสำหรับการพิสูจน์ตัวตนโทเค็น REST ด้วย JAX-RS และ Jersey
ฉันกำลังมองหาวิธีการเปิดใช้งานการรับรองความถูกต้องใช้โทเค็นในเจอร์ซีย์ ฉันพยายามไม่ใช้เฟรมเวิร์กเฉพาะใด ๆ เป็นไปได้ไหม แผนของฉันคือ: ผู้ใช้สมัครใช้บริการเว็บของฉันบริการเว็บของฉันสร้างโทเค็นส่งไปยังลูกค้าและลูกค้าจะเก็บไว้ จากนั้นลูกค้าสำหรับแต่ละคำขอจะส่งโทเค็นแทนชื่อผู้ใช้และรหัสผ่าน ฉันคิดว่าจะใช้ตัวกรองที่กำหนดเองสำหรับแต่ละคำขอ@PreAuthorize("hasRole('ROLE')") แต่ฉันคิดว่านี่เป็นสาเหตุทำให้มีคำขอจำนวนมากไปยังฐานข้อมูลเพื่อตรวจสอบว่าโทเค็นนั้นถูกต้องหรือไม่ หรือไม่สร้างตัวกรองและในแต่ละคำขอจะใส่โทเค็นพารามิเตอร์หรือไม่ เพื่อให้แต่ละ API ตรวจสอบโทเค็นก่อนและหลังจากดำเนินการบางอย่างเพื่อดึงทรัพยากร

14
ฤดูใบไม้ผลิ: @ ส่วนประกอบกับ @Bean
ฉันเข้าใจว่ามีการเพิ่ม@Componentคำอธิบายประกอบในฤดูใบไม้ผลิ 2.5 เพื่อกำจัดคำจำกัดความ xml bean โดยใช้การสแกนคลาสพา ธ @Beanถูกนำมาใช้ในฤดูใบไม้ผลิ 3.0 และสามารถใช้กับ@Configurationเพื่อกำจัดไฟล์ xml อย่างสมบูรณ์และใช้การกำหนดค่า Java แทน เป็นไปได้ไหมที่จะใช้@Componentคำอธิบายประกอบซ้ำแทนที่จะแนะนำ@Beanคำอธิบายประกอบ ความเข้าใจของฉันคือเป้าหมายสุดท้ายคือการสร้างถั่วในทั้งสองกรณี

14
อะไรคือความแตกต่างระหว่างอินสแตนซ์ของและ Class.isAssignableFrom (…)?
ข้อใดต่อไปนี้ดีกว่า a instanceof B หรือ B.class.isAssignableFrom(a.getClass()) ความแตกต่างเพียงอย่างเดียวที่ฉันรู้คือเมื่อ 'a' เป็นโมฆะอันแรกจะคืนค่าเท็จในขณะที่ตัวที่สองส่งข้อยกเว้น นอกจากนั้นพวกเขาจะให้ผลลัพธ์เดียวกันเสมอหรือไม่?

30
กรณีต่อต้านการตรวจสอบข้อยกเว้น
เป็นเวลาหลายปีแล้วที่ฉันไม่สามารถรับคำตอบที่เหมาะสมสำหรับคำถามต่อไปนี้: เหตุใดนักพัฒนาซอฟต์แวร์บางคนจึงต่อต้านข้อยกเว้นที่ตรวจสอบ ฉันมีการสนทนามากมายอ่านสิ่งต่าง ๆ บนบล็อกอ่านสิ่งที่ Bruce Eckel ต้องพูด (คนแรกที่ฉันเห็นพูดต่อต้านพวกเขา) ขณะนี้ฉันกำลังเขียนโค้ดใหม่และให้ความสนใจอย่างระมัดระวังกับวิธีที่ฉันจัดการกับข้อยกเว้น ฉันพยายามที่จะเห็นมุมมองของฝูงชน "เราไม่ชอบการตรวจสอบข้อยกเว้น" และฉันก็ยังไม่เห็น ทุกบทสนทนาที่ฉันจบลงด้วยคำถามเดียวกันที่ยังไม่ได้รับคำตอบขอให้ฉันตั้งค่า: โดยทั่วไป (จากวิธีการออกแบบ Java) Error สำหรับสิ่งที่ไม่ควรถูกจับ (VM มีอาการแพ้ถั่วลิสงและมีคนทิ้งขวดถั่วลิสงลงไป) RuntimeException สำหรับสิ่งที่โปรแกรมเมอร์ทำผิด (โปรแกรมเมอร์เดินจากจุดสิ้นสุดของอาร์เรย์) Exception(ยกเว้นRuntimeException) สำหรับสิ่งที่อยู่นอกเหนือการควบคุมของโปรแกรมเมอร์ (ดิสก์เต็มในขณะที่เขียนไปยังระบบไฟล์มีการ จำกัด การจัดการไฟล์สำหรับกระบวนการแล้วและคุณไม่สามารถเปิดไฟล์ได้อีก) Throwable เป็นเพียงพาเรนต์ของชนิดข้อยกเว้นทั้งหมด อาร์กิวเมนต์ทั่วไปที่ฉันได้ยินคือถ้ามีข้อยกเว้นเกิดขึ้นจากนั้นนักพัฒนาทั้งหมดจะต้องทำคือออกจากโปรแกรม อาร์กิวเมนต์ที่พบบ่อยอีกข้อที่ฉันได้ยินคือการยกเว้นการตรวจสอบทำให้ยากต่อการกำหนดรหัสซ้ำ สำหรับอาร์กิวเมนต์ "สิ่งที่ฉันต้องทำคือออก" ฉันบอกว่าแม้ว่าคุณจะออกจากคุณต้องแสดงข้อความแสดงข้อผิดพลาดที่สมเหตุสมผล หากคุณเพียงแค่ลงโทษในการจัดการข้อผิดพลาดผู้ใช้ของคุณจะไม่มีความสุขมากเกินไปเมื่อโปรแกรมออกโดยไม่ระบุสาเหตุที่ชัดเจน สำหรับกลุ่ม "ทำให้ยากที่จะสร้างใหม่" ซึ่งบ่งชี้ว่าไม่ได้เลือกระดับที่เหมาะสมของสิ่งที่เป็นนามธรรม แทนที่จะประกาศวิธีการพ่นIOExceptionที่IOExceptionควรจะเปลี่ยนเป็นข้อยกเว้นที่เหมาะสมมากขึ้นสำหรับสิ่งที่เกิดขึ้นใน ฉันไม่มีปัญหาในการตัด Main ด้วยcatch(Exception)(หรือในบางกรณีcatch(Throwable)เพื่อให้แน่ใจว่าโปรแกรมสามารถออกจากระบบได้อย่างงดงาม - แต่ฉันมักจะจับข้อยกเว้นเฉพาะที่จำเป็นต้องใช้การทำเช่นนั้นทำให้ฉันสามารถแสดงที่เหมาะสมอย่างน้อยที่สุด ข้อความผิดพลาด. คำถามที่ผู้คนไม่เคยตอบคือ: หากคุณโยนRuntimeException คลาสย่อยแทนที่จะเป็นException …

27
Java 8 แตกต่างกันตามคุณสมบัติ
ใน Java 8 ฉันจะกรองคอลเล็กชันโดยใช้StreamAPI ได้อย่างไรโดยตรวจสอบความแตกต่างของคุณสมบัติของแต่ละวัตถุ ตัวอย่างเช่นฉันมีรายการPersonวัตถุและฉันต้องการลบคนที่มีชื่อเดียวกัน persons.stream().distinct(); จะใช้การตรวจสอบความเท่าเทียมกันเริ่มต้นสำหรับPersonวัตถุดังนั้นฉันต้องการบางสิ่งเช่น persons.stream().distinct(p -> p.getName()); น่าเสียดายที่distinct()วิธีการนี้ไม่มีการโอเวอร์โหลดดังกล่าว หากไม่มีการแก้ไขการตรวจสอบความเท่าเทียมกันในPersonชั้นเรียนเป็นไปได้ไหมที่จะทำอย่างรัดกุม?

18
วิธีการแปลง java.util.Date เป็น java.sql.Date?
ฉันพยายามที่จะใช้java.util.Dateเป็นอินพุตแล้วสร้างแบบสอบถามด้วย - ดังนั้นฉันต้องการjava.sql.Dateดังนั้นฉันต้องการ ฉันประหลาดใจที่พบว่ามันไม่สามารถทำการแปลงได้โดยปริยายหรืออย่างชัดเจน - แต่ฉันไม่รู้ด้วยซ้ำว่าฉันจะทำสิ่งนี้อย่างไรเนื่องจาก Java API ยังค่อนข้างใหม่สำหรับฉัน
453 java  sql  datetime  date 


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