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

ใช้แท็กนี้สำหรับคำถามเฉพาะสำหรับ Java 8 ซึ่งเป็นรุ่น 8 (หมายเลขภายใน 1.8) ของแพลตฟอร์ม Java ซึ่งเปิดตัวในวันที่ 18 มีนาคม 2014 ในกรณีส่วนใหญ่คุณควรระบุแท็ก java ด้วย

9
คลาสได้รับการคอมไพล์โดย Java Environment เวอร์ชันล่าสุด
ขณะรันสคริปต์ซีลีเนียมฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้ใน Eclipse console: คลาสได้รับการคอมไพล์โดย Java Environment เวอร์ชันล่าสุด (ไฟล์คลาสเวอร์ชัน 53.0) เวอร์ชัน Java Runtime นี้รู้จักเวอร์ชันไฟล์คลาสสูงสุด 52.0 เท่านั้น เวอร์ชัน Java: 8 IDE: Eclipse Oxygen เวอร์ชัน Firefox: 46

6
การใช้สตรีมเพื่อรวบรวมลงใน TreeSet ด้วยตัวเปรียบเทียบแบบกำหนดเอง
การทำงานใน Java 8 ฉันได้TreeSetกำหนดไว้ดังนี้: private TreeSet<PositionReport> positionReports = new TreeSet<>(Comparator.comparingLong(PositionReport::getTimestamp)); PositionReport เป็นคลาสที่ค่อนข้างง่ายที่กำหนดไว้เช่นนี้: public static final class PositionReport implements Cloneable { private final long timestamp; private final Position position; public static PositionReport create(long timestamp, Position position) { return new PositionReport(timestamp, position); } private PositionReport(long timestamp, Position position) { this.timestamp = timestamp; …

4
'Optional.get ()' โดยไม่ต้องทำเครื่องหมาย 'isPresent ()'
ฉันมีรหัสค้นหาต่อไปนี้ใน Java: return getTableViewController().getMe().getColumns().stream().filter($->Database.equalsColumnName($.getId(), columnId)).findFirst().get(); ฉันต้องการค้นหาคอลัมน์ตามชื่อและส่งกลับรายการแรกที่พบ ฉันเข้าใจว่ามีกรณีที่ไม่พบสิ่งใดและควรดำเนินการอย่างไร นี่คือสิ่งที่ต้องการโดยคำสาบานนี้: 'Optional.get()' without 'isPresent()' check เหรอ? แก้ไขอย่างไร? ฉันต้องการที่จะกลับมาnullหากไม่พบสิ่งใด อัปเดต โอเคโอเคฉันไม่รู้ว่าfindFirst()จะกลับOptionalมา

3
การใช้วิธีการ "เริ่มต้น" ที่กำหนดไว้ในอินเทอร์เฟซคืออะไร?
ในอินเทอร์เฟซการรวบรวมฉันพบเมธอดชื่อหนึ่งremoveIf()ที่มีการนำไปใช้งาน default boolean removeIf(Predicate<? super E> filter) { Objects.requireNonNull(filter); boolean removed = false; final Iterator<E> each = iterator(); while (each.hasNext()) { if (filter.test(each.next())) { each.remove(); removed = true; } } return removed; } ฉันต้องการทราบว่ามีวิธีใดในการกำหนด method body ในอินเทอร์เฟซหรือไม่? คีย์เวิร์ด คืออะไรdefaultและทำงานอย่างไร?
91 java  interface  java-8 


7
ความแตกต่างระหว่าง findAny () และ findFirst () ใน Java 8
Наэтотвопросестьответына Stack Overflow нарусском : Какиеразличиямежду findFirst и findAny в Java 8? ฉันสับสนเล็กน้อยระหว่างStream#findAny()และStream#findFirst()ของ StreamAPI ใน Java 8 สิ่งที่ฉันเข้าใจคือทั้งสองจะส่งคืนองค์ประกอบแรกที่ตรงกันจากสตรีมเช่นเมื่อใช้ร่วมกับตัวกรอง? เหตุใดจึงมีสองวิธีสำหรับงานเดียวกัน? ฉันพลาดอะไรไปรึเปล่า?

5
java.util.Objects.isNull กับ object == null
อย่างที่ทราบjava.util.Objectsคือ คลาสนี้ประกอบด้วยวิธียูทิลิตี้แบบคงที่สำหรับการดำเนินการกับอ็อบเจ็กต์ Objects.isNull()หนึ่งในวิธีการดังกล่าวเป็น ความเข้าใจของฉันคือการที่จะเอาโอกาสของการตั้งใจกำหนดค่าโมฆะไปยังวัตถุโดยเลี่ยงที่สองObjects.isNull()= อย่างไรก็ตาม API Note ระบุว่า: วิธีนี้มีไว้เพื่อใช้เป็นเพรดิเคตตัวกรอง (Objects :: isNull) จะมีเหตุผลใด ๆ / สถานการณ์ที่ฉันควรใช้object == nullมากกว่าObjects.isNull()ในถ้ามีคำสั่ง ? ควรObjects.isNull()จำกัด เฉพาะ Predicates เท่านั้นหรือไม่?
91 java  java-8  compare 

12
Java 8 lambda รับและลบองค์ประกอบจากรายการ
ด้วยรายการองค์ประกอบฉันต้องการรับองค์ประกอบที่มีคุณสมบัติที่กำหนดและลบออกจากรายการ ทางออกที่ดีที่สุดที่ฉันพบคือ: ProducerDTO p = producersProcedureActive .stream() .filter(producer -> producer.getPod().equals(pod)) .findFirst() .get(); producersProcedureActive.remove(p); เป็นไปได้หรือไม่ที่จะรวมการรับและลบในนิพจน์แลมบ์ดา

5
เหตุใด findFirst () จึงโยน NullPointerException หากองค์ประกอบแรกที่พบเป็นโมฆะ
ทำไมถึงโยนjava.lang.NullPointerException? List<String> strings = new ArrayList<>(); strings.add(null); strings.add("test"); String firstString = strings.stream() .findFirst() // Exception thrown here .orElse("StringWhenListIsEmpty"); //.orElse(null); // Changing the `orElse()` to avoid ambiguity รายการแรกstringsคือnullซึ่งเป็นมูลค่าที่ยอมรับได้อย่างสมบูรณ์ นอกจากนี้ยังfindFirst()ส่งคืนตัวเลือกซึ่งเหมาะสมยิ่งกว่าfindFirst()ที่จะสามารถจัดการกับnulls ได้ แก้ไข: อัปเดตorElse()ให้มีความคลุมเครือน้อยลง

6
เป็นไปได้ไหมที่จะใช้ Java 8 Stream API บน Android API <24
เคยอ่านกระทู้นี้ที่นี่ แต่ฉันยังไม่สามารถรันโค้ดที่มีคุณสมบัติ Java 8 Stream API ดังต่อไปนี้บน minSdkVersion &lt;24 List&lt;Car&gt; newCars = cars.stream() .filter(s -&gt; s.getColor().equals("red")) .collect(Collectors.toList()); สิ่งนี้ไม่ทำงานเนื่องจากข้อความแสดงข้อผิดพลาด การโทรต้องใช้ API ระดับ 24 (ขั้นต่ำปัจจุบันคือ 15): java.util.Collection # stream มีใครรู้วิธีแก้ปัญหาบ้างไหม?

7
มีวิธีใดในการแปลง ZoneId เป็น ZoneOffset ใน java 8 หรือไม่?
ฉันมี epoch วินาทีและ zoneId โดย method1 มันสามารถแปลงเป็น LocalDateTime ด้วย zoneId เริ่มต้นของระบบได้ แต่ฉันไม่พบวิธีแปลง epoch วินาทีเป็น LocalDateTime โดย method2 เพราะไม่มีZoneOffset.systemDefaultฉันคิดว่ามันคลุมเครือ import java.time.{Instant, LocalDateTime, ZoneId, ZoneOffset} val epochSecond = System.currentTimeMillis() / 1000 LocalDateTime.ofInstant(Instant.ofEpochSecond(epochSecond), ZoneId.systemDefault())//method1 LocalDateTime.ofEpochSecond(epochSecond, 0, ZoneOffset.MAX)//method2


5
เราจะจัดการสตรีม jdk8 สำหรับค่า null ได้อย่างไร
สวัสดีเพื่อนนักพัฒนา Java ฉันรู้ว่าหัวเรื่องอาจจะเล็กน้อยin advanceเนื่องจาก JDK8 ยังไม่เปิดตัว (และยังไม่ใช่สำหรับตอนนี้ .. ) แต่ฉันกำลังอ่านบทความเกี่ยวกับนิพจน์ Lambda และโดยเฉพาะส่วนที่เกี่ยวข้องกับ API คอลเล็กชันใหม่ที่เรียกว่า Stream นี่คือตัวอย่างตามที่ระบุในบทความนิตยสาร Java (เป็นอัลกอริธึมประชากรนาก .. ): Set&lt;Otter&gt; otters = getOtters(); System.out.println(otters.stream() .filter(o -&gt; !o.isWild()) .map(o -&gt; o.getKeeper()) .filter(k -&gt; k.isFemale()) .into(new ArrayList&lt;&gt;()) .size()); คำถามของฉันคือจะเกิดอะไรขึ้นถ้าอยู่ตรงกลางของการวนซ้ำภายใน Set ตัวนากตัวใดตัวหนึ่งเป็นโมฆะ ฉันคาดหวังว่า NullPointerException จะถูกโยนทิ้งไป แต่บางทีฉันอาจยังติดอยู่ในกระบวนทัศน์การพัฒนาก่อนหน้านี้ (ไม่สามารถใช้งานได้) ใครบางคนสามารถให้ความกระจ่างแก่ฉันได้ว่าควรจัดการอย่างไร หากนี่เป็นการโยน NullPointerException จริงๆฉันพบว่าคุณลักษณะนี้ค่อนข้างอันตรายและจะต้องใช้เฉพาะดังต่อไปนี้: ผู้พัฒนาเพื่อให้แน่ใจว่าไม่มีค่า …

5
Java 1.8 ASM ClassReader ล้มเหลวในการแยกวิเคราะห์ไฟล์คลาส - อาจเป็นเพราะไฟล์คลาส Java เวอร์ชันใหม่ที่ยังไม่รองรับ
เว็บแอปพลิเคชันของฉันทำงานได้ดีบน JDK 1.7 แต่ขัดข้องบน 1.8 โดยมีข้อยกเว้นต่อไปนี้ (ระหว่างการเริ่มต้นแอ็พพลิเคชันเซิร์ฟเวอร์ด้วย Jetty 8) ฉันใช้ Spring version: 3.2.5.RELEASE ข้อยกเว้น: org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet ฉันคิดว่าปัญหาเกิดขึ้นเนื่องจากสปริงและไลบรารี "asm.jar" ซึ่งขึ้นอยู่กับ ฉันจะแก้ไขปัญหานี้ได้อย่างไร
88 java  spring  java-8 

14
Java 8 สตรีมเพื่อค้นหาองค์ประกอบที่ซ้ำกัน
ฉันกำลังพยายามแสดงรายการองค์ประกอบที่ซ้ำกันในรายการจำนวนเต็มพูดเช่น List&lt;Integer&gt; numbers = Arrays.asList(new Integer[]{1,2,1,3,4,4}); ใช้ Streams ของ jdk 8 มีใครลองบ้าง ในการลบรายการที่ซ้ำกันเราสามารถใช้ API ที่แตกต่างกัน () แต่การค้นหาองค์ประกอบที่ซ้ำกันล่ะ? ใครสามารถช่วยฉันออก?

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