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

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

17
Maven ไม่ทำงานใน Java 8 เมื่อ Javadoc แท็กไม่สมบูรณ์
ตั้งแต่ฉันใช้ Maven ฉันสามารถสร้างและติดตั้งในโครงการที่เก็บในเครื่องของฉันที่มีแท็ก Javadoc ที่ไม่สมบูรณ์ (ตัวอย่างเช่นพารามิเตอร์ขาดหายไป) อย่างไรก็ตามเนื่องจากฉันย้ายไปยัง Java 8 (1.8.0-ea-b90) Maven นั้นเข้มงวดมากเกี่ยวกับแท็กเอกสารที่หายไปและแสดงข้อผิดพลาด Javadoc จำนวนมากที่เกี่ยวข้องกับปัญหา Javadoc เมื่อฉันพยายามสร้างหรือติดตั้งโครงการที่ Javadoc ไม่ได้ "สมบูรณ์แบบ" บางโครงการที่ฉันพยายามรวบรวมและติดตั้งในพื้นที่เก็บข้อมูลในพื้นที่ของฉันคือโครงการของ บริษัท อื่นซึ่งฉันไม่สามารถควบคุมได้ ดังนั้นการแก้ปัญหาเพียงแก้ไข Javadocs ทั้งหมดในโครงการเหล่านี้ทั้งหมดจึงดูเหมือนจะไม่เป็นไปได้ในสถานการณ์ของฉัน นี่เป็นส่วนเล็ก ๆ ของผลลัพธ์ที่ฉันเห็นเมื่อฉันดำเนินการmvn clean package installในโครงการของฉัน: [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 9.026s [INFO] Finished at: Mon Apr 08 21:06:17 CEST …

13
ทำลายหรือกลับจากสตรีม Java 8 forEach หรือไม่
เมื่อใช้การวนซ้ำภายนอกมากกว่าการที่Iterableเราใช้breakหรือreturnจากการปรับปรุงสำหรับแต่ละลูปเป็น: for (SomeObject obj : someObjects) { if (some_condition_met) { break; // or return obj } } เราสามารถbreakหรือreturnใช้การวนซ้ำภายในในนิพจน์แลมบ์ดาของ Java 8 เช่น: someObjects.forEach(obj -> { //what to do here? })
312 java  foreach  lambda  java-8 

9
“ Java Concurrency In Practice” ยังคงใช้ได้หรือไม่ [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน3 ปีที่ผ่านมา ปรับปรุงคำถามนี้ คือJava Concurrency ในการปฏิบัติยังคงถูกต้อง? ฉันสงสัยว่าแนวคิดแนวคิดและการนำไปปฏิบัติที่อธิบายไว้ในหนังสือเล่มนี้ยังคงสอดคล้องกับ Java เวอร์ชันล่าสุดหรือไม่ ฉันถามเพราะฉบับล่าสุดทำในปี 2549

5
Java 8 getters ส่งคืนชนิดตัวเลือกหรือไม่?
Optional type ที่แนะนำใน Java 8 เป็นสิ่งใหม่สำหรับนักพัฒนาหลายคน เป็นวิธีการทะเยอทะยานกลับOptional<Foo>ประเภทในสถานที่ของคลาสสิกFooการปฏิบัติที่ดี? nullสมมติว่าค่าที่สามารถ

17
ฉันจะโยนข้อยกเว้นตรวจสอบจากภายในสตรีม Java 8 ได้อย่างไร
ฉันจะโยนข้อยกเว้นตรวจสอบจากภายใน Java 8 สตรีม / lambdas ได้อย่างไร กล่าวอีกนัยหนึ่งฉันต้องการสร้างรหัสเช่นคอมไพล์นี้: public List<Class> getClasses() throws ClassNotFoundException { List<Class> classes = Stream.of("java.lang.Object", "java.lang.Integer", "java.lang.String") .map(className -> Class.forName(className)) .collect(Collectors.toList()); return classes; } รหัสนี้ไม่ได้รวบรวมเนื่องจากClass.forName()วิธีการดังกล่าวข้างต้นพ่นClassNotFoundExceptionซึ่งมีการตรวจสอบ โปรดทราบฉันไม่ต้องการห่อข้อยกเว้นที่ตรวจสอบภายในข้อยกเว้นรันไทม์และโยนข้อยกเว้นที่ไม่ได้ตรวจสอบและแทนที่ ฉันต้องการที่จะโยนข้อยกเว้นการตรวจสอบตัวเองและไม่เพิ่มน่าเกลียดtry/ catchesกับกระแส

4
Collection.stream (). forEach () และ Collection.forEach () แตกต่างกันอย่างไร?
ฉันเข้าใจว่าด้วย.stream()ฉันสามารถใช้การปฏิบัติการลูกโซ่เช่น.filter()หรือใช้กระแสข้อมูลแบบขนาน แต่อะไรคือความแตกต่างระหว่างพวกเขาหากฉันต้องการดำเนินการเล็ก ๆ (เช่นการพิมพ์องค์ประกอบของรายการ) collection.stream().forEach(System.out::println); collection.forEach(System.out::println);

9
วิธีรับมิลลิวินาทีจาก LocalDateTime ใน Java 8
ผมสงสัยว่าถ้ามีวิธีที่จะได้รับในปัจจุบันมิลลิวินาทีตั้งแต่ 1970/01/01 (ยุค) โดยใช้ใหม่LocalDate, LocalTimeหรือLocalDateTimeชั้นเรียนของ Java 8 วิธีที่ทราบอยู่ด้านล่าง: long currentMilliseconds = new Date().getTime(); หรือ long currentMilliseconds = System.currentTimeMillis();


11
รูปแบบการใช้งานของ Java 8's Optional.ifPresent และ if-not-Present?
ใน Java 8 ฉันต้องการทำบางสิ่งกับOptionalวัตถุถ้ามีอยู่และทำสิ่งอื่นหากไม่มีอยู่ if (opt.isPresent()) { System.out.println("found"); } else { System.out.println("Not found"); } แม้ว่านี่จะไม่ใช่ 'สไตล์การทำงาน' ก็ตาม OptionalมีifPresent()วิธีการ แต่ฉันไม่สามารถเชื่อมโยงorElse()วิธีการใด ๆ ดังนั้นฉันไม่สามารถเขียน: opt.ifPresent( x -> System.out.println("found " + x)) .orElse( System.out.println("NOT FOUND")); ในการตอบกลับถึง @assylias ฉันไม่คิดว่าจะOptional.map()ทำงานได้ในกรณีต่อไปนี้: opt.map( o -> { System.out.println("while opt is present..."); o.setProperty(xxx); dao.update(o); return null; }).orElseGet( () -> { …

13
ใช้เป็นทางเลือก
เมื่อใช้ Java 8 มาเป็นเวลา 6 เดือนหรือมากกว่านั้นฉันมีความสุขมากกับการเปลี่ยนแปลง API ใหม่ Optionalหนึ่งในพื้นที่ที่ฉันยังคงไม่มั่นใจในความเป็นเมื่อมีการใช้งาน ดูเหมือนว่าฉันจะแกว่งไปมาระหว่างที่ต้องการใช้มันทุกที่ที่เป็นไปได้nullและไม่มีที่ไหนเลย ดูเหมือนจะมีหลายสถานการณ์ที่ฉันสามารถใช้งานได้และฉันไม่แน่ใจว่ามันจะเพิ่มประโยชน์ (ความปลอดภัยในการอ่าน / ความปลอดภัยเป็นโมฆะ) หรือเพียงแค่ทำให้เกิดค่าใช้จ่ายเพิ่มเติม ดังนั้นฉันมีตัวอย่างเล็ก ๆ น้อย ๆ และฉันสนใจในความคิดของชุมชนว่าOptionalมีประโยชน์หรือไม่ 1 - ในฐานะที่เป็นวิธีการที่สาธารณะประเภทกลับเมื่อวิธีการที่จะกลับมาnull: public Optional<Foo> findFoo(String id); 2 - เป็นพารามิเตอร์เมธอดเมื่อพารามิเตอร์อาจเป็นnull: public Foo doSomething(String id, Optional<Bar> barOptional); 3 - ในฐานะสมาชิกเสริมของ bean: public class Book { private List<Pages> pages; private Optional<Index> index; …
271 java  java-8  optional 

10
Java 8: ความแตกต่างระหว่างสอง LocalDateTime ในหลาย ๆ หน่วย
ฉันพยายามคำนวณความแตกต่างระหว่างสองLocalDateTimeอย่าง y years m months d days h hours m minutes s secondsความต้องการส่งออกไปเป็นรูปแบบ นี่คือสิ่งที่ฉันเขียน: import java.time.Duration; import java.time.Instant; import java.time.LocalDateTime; import java.time.Period; import java.time.ZoneId; public class Main { static final int MINUTES_PER_HOUR = 60; static final int SECONDS_PER_MINUTE = 60; static final int SECONDS_PER_HOUR = SECONDS_PER_MINUTE * MINUTES_PER_HOUR; public static …

3
ความแตกต่างระหว่าง Java 8 Date Time API (java.time) และ Joda-Time
ฉันรู้ว่ามีคำถามที่เกี่ยวข้องกับjava.util.Dateและ Joda-Time แต่หลังจากการขุดบางอย่างผมไม่สามารถหาหัวข้อเกี่ยวกับความแตกต่างระหว่างที่java.time API (ใหม่ในJava 8กำหนดโดยJSR 310 ) และJoda เวลา ฉันได้ยินมาว่า java.time API ของ Java 8 นั้นสะอาดกว่าและสามารถทำได้มากกว่า Joda-Time แต่ฉันไม่สามารถหาตัวอย่างเปรียบเทียบทั้งสองได้ java.time ทำอะไรได้บ้างที่ Joda-Time ไม่สามารถทำได้? java.time ทำอะไรได้ดีกว่า Joda-Time ประสิทธิภาพดีขึ้นด้วย java.time หรือไม่

9
เหตุใดสตรีม <T> จึงไม่ใช้ Iterable <T>
ใน Java 8 เรามีคลาส Stream &lt;T&gt;ซึ่งมีวิธีการอยากรู้อยากเห็น Iterator&lt;T&gt; iterator() ดังนั้นคุณคาดหวังว่าจะใช้อินเตอร์เฟสIterable &lt;T&gt;ซึ่งต้องการวิธีการนี้อย่างแน่นอน แต่นั่นไม่ใช่กรณี เมื่อฉันต้องการวนซ้ำสตรีมโดยใช้ลูป foreach ฉันต้องทำอะไรเช่นนี้ public static Iterable&lt;T&gt; getIterable(Stream&lt;T&gt; s) { return new Iterable&lt;T&gt; { @Override public Iterator&lt;T&gt; iterator() { return s.iterator(); } }; } for (T element : getIterable(s)) { ... } ฉันทำอะไรบางอย่างหายไปหรือเปล่า

9
วิธีการเริ่มต้นได้รับการรองรับเฉพาะการเริ่มต้นด้วย Android N
ฉันอัพเกรดเป็น android studio 3.1 และฉันได้รับข้อผิดพลาดต่อไปนี้: Default interface methods are only supported starting with Android N (--min-api 24): void android.arch.lifecycle.DefaultLifecycleObserver.onCreate(android.arch.lifecycle.LifecycleOwner) Message{kind=ERROR, text=Default interface methods are only supported starting with Android N (--min-api 24): void android.arch.lifecycle.DefaultLifecycleObserver.onCreate(android.arch.lifecycle.LifecycleOwner), sources=[Unknown source file], tool name=Optional.of(D8)} นี่คือการกำหนดค่า gradle ของฉัน: compileSdkVersion 27 //buildToolsVersion '27.0.3' defaultConfig { minSdkVersion 16 …
262 android  java-8  kotlin 

3
การอ้างอิงเมธอด Java 8: ระบุผู้จัดหาที่มีความสามารถในการจัดหาผลลัพธ์ที่มีพารามิเตอร์
ฉันต้องการใช้ java.util.Optional.orElseThrow() กับประเภทข้อยกเว้นที่ขอพารามิเตอร์คอนสตรัค บางสิ่งเช่นนี้ .orElseThrow(MyException::new(someArgument)) // obviously NOT working มีวิธีในการสร้างผู้จัดหาที่ส่งผ่านค่าอาร์กิวเมนต์ของฉันหรือไม่
259 java  java-8  java-stream 

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