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

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

6
เหตุใด java.util.Optional จึงไม่สามารถต่ออนุกรมได้วิธีการทำให้วัตถุเป็นอนุกรมกับช่องดังกล่าว
คลาส Enum สามารถต่ออนุกรมได้ดังนั้นจึงไม่มีปัญหาในการทำให้วัตถุเป็นอนุกรมกับ enums อีกกรณีคือที่คลาสมีฟิลด์ของคลาส java.util.Optional ในกรณีนี้จะเกิดข้อยกเว้นต่อไปนี้: java.io.NotSerializableException: java.util.Optional วิธีจัดการกับคลาสดังกล่าวจะทำให้เป็นอนุกรมได้อย่างไร เป็นไปได้ไหมที่จะส่งวัตถุดังกล่าวไปยัง Remote EJB หรือผ่าน RMI? นี่คือตัวอย่าง: import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.Optional; import org.junit.Test; public class SerializationTest { static class My implements Serializable { private static final long serialVersionUID = 1L; Optional<Integer> value = Optional.empty(); public …

9
วิธีการแปลง ZonedDateTime เป็น Date?
ฉันกำลังพยายามตั้งค่าวันเวลาที่ไม่เชื่อเรื่องพระเจ้าของเซิร์ฟเวอร์ในฐานข้อมูลของฉันและฉันเชื่อว่าแนวทางปฏิบัติที่ดีที่สุดคือการตั้งค่าวันที่เวลา UTC เซิร์ฟเวอร์ฐานข้อมูลของฉันคือ Cassandra และไดรเวอร์ db สำหรับ Java เข้าใจเฉพาะประเภท Date ดังนั้นสมมติว่าในโค้ดของฉันฉันใช้ Java 8 ZonedDateTime ใหม่เพื่อรับ UTC ทันที ( ZonedDateTime.now(ZoneOffset.UTC)) ฉันจะแปลงอินสแตนซ์ ZonedDateTime นี้เป็นคลาส Date "ดั้งเดิม" ได้อย่างไร

11
ความแตกต่างระหว่างวิธีการคงที่และวิธีเริ่มต้นในอินเทอร์เฟซ
ฉันเรียนรู้ผ่านอินเทอร์เฟซเมื่อสังเกตเห็นว่าตอนนี้คุณสามารถกำหนดวิธีการแบบคงที่และเริ่มต้นในอินเทอร์เฟซได้ public interface interfacesample2 { public static void method() { System.out.println("hello world"); } public default void menthod3() { System.out.println("default print"); } } กรุณาอธิบายความแตกต่างของทั้งสองอย่างและหากมีตัวอย่างว่าเราจะใช้สิ่งนี้เมื่อใดก็จะดี สับสนเล็กน้อยเกี่ยวกับอินเทอร์เฟซ
108 java  java-8 

5
วิธีรับ UTC + 0 date ใน Java 8
ฉันมีปัญหากับคลาส Date ใน Java คลาสวันที่ส่งคืนวันที่เครื่องในเครื่อง แต่ฉันต้องการ UTC-0 ฉัน googled และพบวิธีแก้ปัญหาที่ยอดเยี่ยมสำหรับ JavaScript แต่สำหรับ Java ไม่มีประโยชน์อะไร วิธีรับ UTC + 0 date ใน Java 8

1
มีนักสะสมที่รวบรวมไปยังชุดรักษาคำสั่งซื้อหรือไม่?
Collectors.toSet()ไม่รักษาระเบียบ ฉันสามารถใช้ Lists แทนได้ แต่ฉันต้องการระบุว่าคอลเล็กชันผลลัพธ์ไม่อนุญาตให้มีการทำซ้ำองค์ประกอบซึ่งเป็นSetอินเทอร์เฟซสำหรับอะไร
107 java  java-8  collectors 

4
คำศัพท์“ sugar”,“ desugar” ในบริบทของ Java 8 คืออะไร?
ฉันได้ยินเกี่ยวกับ 'sugaring' และ 'desugaring' บ่อยขึ้นใน Java 8 คำศัพท์เหล่านี้หมายความว่าอย่างไร เป็นแนวความคิดหรือเชิงสังเคราะห์ ตัวอย่างบางส่วน: เริ่มต้นการวนซ้ำที่เริ่มต้นการคืนค่าเป็น java ข้อสังเกตเกี่ยวกับน้ำตาลวากยสัมพันธ์ในการรวบรวม.
107 java  semantics  java-8 

2
จะแปลง LocalDate เป็น Instant ได้อย่างไร?
ฉันทำงานกับ DateTime API ใหม่ของ Java 8 จะแปลง LocalDate เป็น Instant ได้อย่างไร? ฉันได้รับข้อยกเว้นด้วย LocalDate date = LocalDate.of(2012, 2, 2); Instant instant = Instant.from(date); และฉันไม่เข้าใจว่าทำไม

8
คำอธิบายของซัพพลายเออร์และผู้บริโภค Java 8 สำหรับคนธรรมดา
ในฐานะโปรแกรมเมอร์ที่ไม่ใช่ Java ที่เรียนรู้ Java ฉันกำลังอ่านSupplierและConsumerเชื่อมต่ออยู่ในขณะนี้ และฉันไม่สามารถคาดเดาการใช้งานและความหมายของพวกเขาได้ คุณจะใช้อินเทอร์เฟซเหล่านี้เมื่อใดและทำไม ใครช่วยยกตัวอย่างคนธรรมดาง่ายๆให้ฉันหน่อยได้ไหม…ฉันพบว่าตัวอย่างเอกสารไม่กระชับเพียงพอสำหรับความเข้าใจของฉัน
105 java  java-8 

6
จะแยก epoch จาก LocalDate และ LocalDateTime ได้อย่างไร
ฉันจะแยกค่า epoch Longจากอินสแตนซ์ของLocalDateTimeหรือได้LocalDateอย่างไร ฉันได้ลองทำสิ่งต่อไปนี้แล้ว แต่ให้ผลลัพธ์อื่น ๆ : LocalDateTime time = LocalDateTime.parse("04.02.2014 19:51:01", DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss")); System.out.println(time.getLong(ChronoField.SECOND_OF_DAY)); // gives 71461 System.out.println(time.getLong(ChronoField.EPOCH_DAY)); // gives 16105 สิ่งที่ฉันต้องการมีเพียงค่า1391539861สำหรับวันที่และเวลาใน"04.02.2014 19:51:01"เครื่อง เขตเวลาของฉันคือEurope/OsloUTC + 1 พร้อมเวลาออมแสง
103 java  time  java-8  epoch  java-time 

5
กลับมาจาก lambda forEach () ใน java
ฉันกำลังพยายามเปลี่ยนบางส่วนสำหรับแต่ละลูปเป็นแลมบ์ดา - forEach()วิธีการเพื่อค้นหาความเป็นไปได้ของนิพจน์แลมบ์ดา สิ่งต่อไปนี้น่าจะเป็นไปได้: ArrayList<Player> playersOfTeam = new ArrayList<Player>(); for (Player player : players) { if (player.getTeam().equals(teamName)) { playersOfTeam.add(player); } } ด้วยแลมด้า forEach() players.forEach(player->{if (player.getTeam().equals(teamName)) {playersOfTeam.add(player);}}); แต่อันถัดไปใช้ไม่ได้: for (Player player : players) { if (player.getName().contains(name)) { return player; } } กับแลมด้า players.forEach(player->{if (player.getName().contains(name)) {return player;}}); มีบางอย่างผิดปกติในไวยากรณ์ของบรรทัดสุดท้ายหรือเป็นไปไม่ได้ที่จะกลับจากforEach()วิธีการ?

20
รวบรวมคู่ต่อเนื่องจากสตรีม
ได้รับกระแสเช่น{ 0, 1, 2, 3, 4 }, ฉันจะเปลี่ยนเป็นรูปแบบที่กำหนดอย่างหรูหราที่สุดได้อย่างไร: { new Pair(0, 1), new Pair(1, 2), new Pair(2, 3), new Pair(3, 4) } (สมมติว่าฉันได้กำหนด class Pair ไว้แล้ว)? แก้ไข:สิ่งนี้ไม่ได้เกี่ยวกับ ints หรือสตรีมดั้งเดิมอย่างเคร่งครัด คำตอบควรเป็นคำตอบทั่วไปสำหรับสตรีมทุกประเภท
102 java  java-8  java-stream 

5
ฉันควรใช้สตรีมเมื่อใด
ฉันเพิ่งเจอคำถามเมื่อใช้ a Listและstream()วิธีการของมัน แม้ว่าฉันจะรู้วิธีใช้ แต่ฉันก็ไม่ค่อยแน่ใจว่าควรใช้เมื่อใด ตัวอย่างเช่นฉันมีรายการที่มีเส้นทางต่างๆไปยังสถานที่ต่างๆ ตอนนี้ฉันต้องการตรวจสอบว่าเส้นทางเดียวที่ระบุมีเส้นทางใด ๆ ที่ระบุในรายการหรือไม่ ฉันต้องการส่งคืนbooleanโดยพิจารณาว่าเป็นไปตามเงื่อนไขหรือไม่ แน่นอนว่านี่ไม่ใช่งานหนัก แต่ฉันสงสัยว่าฉันควรใช้สตรีมหรือสำหรับ (-each) ลูป รายการ private static final List<String> EXCLUDE_PATHS = Arrays.asList(new String[]{ "my/path/one", "my/path/two" }); ตัวอย่าง - สตรีม private boolean isExcluded(String path){ return EXCLUDE_PATHS.stream() .map(String::toLowerCase) .filter(path::contains) .collect(Collectors.toList()) .size() > 0; } ตัวอย่าง - สำหรับ - แต่ละวง private boolean isExcluded(String …
102 java  java-8  java-stream 

3
วิธีการแปลง LocalDate เป็น SQL Date Java
ฉันจะแปลง LocalDate เป็น a ได้java.sql.Dateอย่างไร พยายาม: Record r = new Record(); LocalDate date = new Date(1967, 06, 22); r.setDateOfBirth(new Date(date)); สิ่งนี้ล้มเหลว(จะไม่รวบรวม)และสิ่งที่ฉันพบคือ Joda time stuff ฉันใช้ Java 8

15
สตรีม Java 8 พร้อมการประมวลผลแบทช์
ฉันมีไฟล์ขนาดใหญ่ที่มีรายการ ฉันต้องการสร้างชุดรายการสร้างคำขอ HTTP ด้วยชุดนี้ (รายการทั้งหมดจำเป็นต้องใช้เป็นพารามิเตอร์ในคำขอ HTTP) ฉันสามารถทำได้อย่างง่ายดายด้วยการforวนซ้ำ แต่ในฐานะคนรัก Java 8 ฉันต้องการลองเขียนสิ่งนี้ด้วย Stream framework ของ Java 8 (และเก็บเกี่ยวผลประโยชน์จากการประมวลผลแบบขี้เกียจ) ตัวอย่าง: List<String> batch = new ArrayList<>(BATCH_SIZE); for (int i = 0; i < data.size(); i++) { batch.add(data.get(i)); if (batch.size() == BATCH_SIZE) process(batch); } if (batch.size() > 0) process(batch); ฉันต้องการทำบางสิ่งบางอย่างที่เป็นแนวยาว lazyFileStream.group(500).map(processBatch).collect(toList()) วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร?

7
วิธีตรวจสอบว่า Java 8 Stream ว่างเปล่าหรือไม่?
ฉันจะตรวจสอบได้อย่างไรว่า a Streamว่างเปล่าและโยนข้อยกเว้นหากไม่ใช่เป็นการดำเนินการที่ไม่ใช่เทอร์มินัล โดยพื้นฐานแล้วฉันกำลังมองหาสิ่งที่เทียบเท่ากับโค้ดด้านล่าง แต่ไม่มีการระบุสตรีมระหว่างนั้น โดยเฉพาะอย่างยิ่งการตรวจสอบไม่ควรเกิดขึ้นก่อนที่สตรีมจะถูกใช้ไปจริงโดยการดำเนินการเทอร์มินัล public Stream<Thing> getFilteredThings() { Stream<Thing> stream = getThings().stream() .filter(Thing::isFoo) .filter(Thing::isBar); return nonEmptyStream(stream, () -> { throw new RuntimeException("No foo bar things available") }); } private static <T> Stream<T> nonEmptyStream(Stream<T> stream, Supplier<T> defaultValue) { List<T> list = stream.collect(Collectors.toList()); if (list.isEmpty()) list.add(defaultValue.get()); return list.stream(); }
100 java  java-8  java-stream 

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