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

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

6
รับองค์ประกอบสุดท้ายของสตรีม / รายการในซับเดียว
ฉันจะรับองค์ประกอบสุดท้ายของสตรีมหรือรายการในรหัสต่อไปนี้ได้อย่างไร ที่ไหนdata.careasเป็นList<CArea>: CArea first = data.careas.stream() .filter(c -> c.bbox.orientationHorizontal).findFirst().get(); CArea last = data.careas.stream() .filter(c -> c.bbox.orientationHorizontal) .collect(Collectors.toList()).; //how to? อย่างที่คุณเห็นการรับองค์ประกอบแรกด้วยองค์ประกอบบางอย่างfilterไม่ใช่เรื่องยาก อย่างไรก็ตามการได้รับองค์ประกอบสุดท้ายในหนึ่งซับเป็นความเจ็บปวดอย่างแท้จริง: ดูเหมือนว่าฉันไม่สามารถรับได้โดยตรงจากไฟล์Stream. (มันจะสมเหตุสมผลสำหรับสตรีมที่ จำกัด เท่านั้น) ดูเหมือนว่าคุณไม่สามารถรับสิ่งต่างๆเช่นfirst()และlast()จากListอินเทอร์เฟซได้ซึ่งเป็นความเจ็บปวดจริงๆ ฉันไม่เห็นอาร์กิวเมนต์ใด ๆ ที่ไม่ให้ a first()และlast()method ในListอินเทอร์เฟซเนื่องจากองค์ประกอบในนั้นได้รับคำสั่งและยิ่งกว่านั้นขนาดก็เป็นที่รู้จัก แต่ตามคำตอบเดิม: จะได้รับองค์ประกอบสุดท้ายของ จำกัด ได้Streamอย่างไร? โดยส่วนตัวแล้วนี่เป็นสิ่งที่ใกล้เคียงที่สุดที่ฉันจะได้รับ: int lastIndex = data.careas.stream() .filter(c -> c.bbox.orientationHorizontal) .mapToInt(c -> data.careas.indexOf(c)).max().getAsInt(); CArea last = …
119 java  list  java-8  java-stream 

9
จะจัดการการกำหนดเวอร์ชัน REST API ด้วยสปริงได้อย่างไร
ฉันค้นหาวิธีจัดการเวอร์ชัน REST API โดยใช้ Spring 3.2.x แต่ฉันไม่พบสิ่งที่ดูแลรักษาง่าย ฉันจะอธิบายปัญหาที่ฉันมีก่อนจากนั้นวิธีแก้ปัญหา ... แต่ฉันสงสัยว่าฉันกำลังประดิษฐ์วงล้อขึ้นมาใหม่ที่นี่ ฉันต้องการจัดการเวอร์ชันโดยใช้ส่วนหัว Accept และตัวอย่างเช่นหากคำขอมีส่วนหัว Accept application/vnd.company.app-1.1+jsonฉันต้องการให้ MVC ส่งต่อไปยังวิธีการที่จัดการเวอร์ชันนี้ และเนื่องจากไม่ใช่วิธีการทั้งหมดใน API ที่เปลี่ยนแปลงในรุ่นเดียวกันฉันจึงไม่ต้องการไปที่คอนโทรลเลอร์แต่ละตัวของฉันและเปลี่ยนแปลงอะไรสำหรับตัวจัดการที่ไม่มีการเปลี่ยนแปลงระหว่างเวอร์ชัน ฉันไม่ต้องการให้ตรรกะในการคิดว่าจะใช้เวอร์ชันใดในคอนโทรลเลอร์ด้วยตัวเอง (โดยใช้ตัวระบุตำแหน่งบริการ) เนื่องจาก Spring กำลังค้นพบวิธีการเรียกใช้แล้ว ดังนั้นจึงใช้ API ที่มีเวอร์ชัน 1.0 ถึง 1.8 ซึ่งมีการแนะนำตัวจัดการในเวอร์ชัน 1.0 และแก้ไขใน v1.7 ฉันต้องการจัดการสิ่งนี้ด้วยวิธีต่อไปนี้ ลองนึกภาพว่าโค้ดนั้นอยู่ในคอนโทรลเลอร์และมีโค้ดบางตัวที่สามารถแยกเวอร์ชันออกจากส่วนหัวได้ (ต่อไปนี้ไม่ถูกต้องในฤดูใบไม้ผลิ) @RequestMapping(...) @VersionRange(1.0,1.6) @ResponseBody public Object method1() { // so something return object; …

2
@RunWith (MockitoJUnitRunner.class) กับ MockitoAnnotations.initMocks (สิ่งนี้)
ในขณะที่เขียนการทดสอบ jUnit4 ใหม่ผมสงสัยว่าจะใช้@RunWith (MockitoJUnitRunner.class) หรือMockitoAnnotations.initMocks (นี้) ฉันสร้างการทดสอบใหม่และวิซาร์ดสร้างการทดสอบโดยอัตโนมัติกับ Runner Javadocs สำหรับ MockitoJUnitRunner ระบุดังต่อไปนี้: เข้ากันได้กับ JUnit 4.4 ขึ้นไปนักวิ่งรุ่นนี้จะเพิ่มพฤติกรรมต่อไปนี้: เริ่มต้น mocks ที่มีคำอธิบายประกอบด้วย Mock ดังนั้นจึงไม่จำเป็นต้องใช้ MockitoAnnotations.initMocks (Object) อย่างชัดเจน Mocks เริ่มต้นก่อนวิธีการทดสอบแต่ละครั้ง ตรวจสอบการใช้งานกรอบหลังจากวิธีการทดสอบแต่ละวิธี ยังไม่ชัดเจนสำหรับฉันว่าการใช้ Runner มีข้อได้เปรียบเหนือวิธีการinitMocks () ที่ฉันใช้ในอดีตหรือไม่ ความคิดเห็นหรือลิงก์ใด ๆ จะได้รับการชื่นชม!
119 java  junit4  mockito 

4
CompletableFuture | จากนั้นใช้เทียบกับแล้ว
ฉันไม่สามารถเข้าใจความแตกต่างระหว่างthenApply() และthenCompose(). แล้วใครช่วยให้กรณีการใช้งานที่ถูกต้อง? จากเอกสาร Java: thenApply(Function<? super T,? extends U> fn) ส่งคืนค่าใหม่CompletionStageที่เมื่อขั้นตอนนี้เสร็จสิ้นตามปกติจะถูกดำเนินการด้วยผลลัพธ์ของสเตจนี้เป็นอาร์กิวเมนต์ของฟังก์ชันที่ให้มา thenCompose(Function<? super T,? extends CompletionStage<U>> fn) ส่งคืนค่าใหม่CompletionStageที่เมื่อขั้นตอนนี้เสร็จสิ้นตามปกติจะถูกดำเนินการด้วยสเตจนี้เป็นอาร์กิวเมนต์ของฟังก์ชันที่ให้มา ฉันเข้าใจว่าอาร์กิวเมนต์ที่ 2 ของการthenComposeขยาย CompletionStage โดยที่thenApplyไม่ได้ มีใครช่วยยกตัวอย่างได้ไหมว่าฉันต้องใช้ในกรณีใดthenApplyและเมื่อthenComposeใด

13
ความแตกต่างระหว่าง Arrays.asList (อาร์เรย์) และ ArrayList ใหม่ <Integer> (Arrays.asList (array))
อะไรคือความแตกต่างระหว่าง 1.List&lt;Integer&gt; list1 = new ArrayList&lt;Integer&gt;(Arrays.asList(ia)); //copy 2.List&lt;Integer&gt; list2 = Arrays.asList(ia); ที่iaเป็นอาร์เรย์ของจำนวนเต็ม ฉันทราบมาว่าการดำเนินการบางอย่างไม่ได้รับอนุญาตในlist2. ทำไมถึงเป็นเช่นนั้น? เก็บไว้ในหน่วยความจำอย่างไร (อ้างอิง / คัดลอก)? เมื่อฉันสับเปลี่ยนรายการlist1ไม่ส่งผลกระทบต่ออาร์เรย์เดิม แต่list2ทำ แต่ก็ยังlist2ค่อนข้างสับสน การArrayListอัปเดตรายการแตกต่างจากการสร้างใหม่อย่างไรArrayList list1 differs from (1) ArrayList&lt;Integer&gt; list1 = new ArrayList&lt;Integer&gt;(Arrays.asList(ia));
119 java  list  collections 

11
การแปลง Long เป็น Date ใน Java จะคืนค่า 1970
ฉันมีรายการที่มีค่ายาว (เช่น 1220227200, 1220832000, 1221436800 ... ) ซึ่งฉันดาวน์โหลดจากบริการเว็บ ฉันต้องแปลงเป็นวันที่ น่าเสียดายที่วิธีนี้ตัวอย่างเช่น: Date d = new Date(1220227200); คืน 1 ม.ค. 2513 ใครทราบวิธีแปลงอื่นให้ถูกต้อง
119 java  date  long-integer 

3
จัดรูปแบบวันที่โดยใช้วันที่และเวลาใหม่ API
ฉันกำลังเล่นกับวันที่เวลาใหม่ API แต่เมื่อเรียกใช้สิ่งนี้: public class Test { public static void main(String[] args){ String dateFormatted = LocalDate.now() .format(DateTimeFormatter .ofPattern("yyyy-MM-dd HH:mm:ss")); System.out.println(dateFormatted); } } มันพ่น: Exception in thread "main" java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: HourOfDay at java.time.LocalDate.get0(LocalDate.java:680) at java.time.LocalDate.getLong(LocalDate.java:659) at java.time.format.DateTimePrintContext.getValue(DateTimePrintContext.java:298) at java.time.format.DateTimeFormatterBuilder$NumberPrinterParser.format(DateTimeFormatterBuilder.java:2543) at java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format(DateTimeFormatterBuilder.java:2182) at java.time.format.DateTimeFormatter.formatTo(DateTimeFormatter.java:1745) at java.time.format.DateTimeFormatter.format(DateTimeFormatter.java:1719) at java.time.LocalDate.format(LocalDate.java:1685) at Test.main(Test.java:23) เมื่อดูซอร์สโค้ดของคลาส …

12
จะจัดการข้อยกเว้นในตัวกรองในฤดูใบไม้ผลิได้อย่างไร?
ฉันต้องการใช้วิธีทั่วไปในการจัดการรหัสข้อผิดพลาด 5xx สมมติว่าเฉพาะกรณีเมื่อ db หยุดทำงานในแอปพลิเคชัน Spring ทั้งหมดของฉัน ฉันต้องการข้อผิดพลาด json แทนการติดตามสแต็ก สำหรับคอนโทรลเลอร์ฉันมี@ControllerAdviceคลาสสำหรับข้อยกเว้นที่แตกต่างกันและนี่ก็เป็นการจับกรณีที่ db หยุดอยู่ตรงกลางของคำขอ แต่นี่ไม่ใช่ทั้งหมด. ฉันยังมีส่วนCorsFilterขยายที่กำหนดเองOncePerRequestFilterและที่นั่นเมื่อฉันโทรหาdoFilterฉันได้รับCannotGetJdbcConnectionExceptionและจะไม่ได้รับการจัดการโดยไฟล์@ControllerAdvice. ฉันอ่านหลายสิ่งทางออนไลน์ซึ่งทำให้ฉันสับสนมากขึ้นเท่านั้น ดังนั้นฉันจึงมีคำถามมากมาย: ฉันต้องติดตั้งตัวกรองแบบกำหนดเองหรือไม่? ฉันพบExceptionTranslationFilterแต่สิ่งนี้จัดการได้AuthenticationExceptionหรือAccessDeniedException. ฉันคิดว่าจะใช้ของฉันเองHandlerExceptionResolverแต่ทำให้ฉันสงสัยฉันไม่มีข้อยกเว้นที่กำหนดเองในการจัดการต้องมีวิธีที่ชัดเจนกว่านี้ ฉันยังพยายามเพิ่ม try / catch และเรียกการใช้งานHandlerExceptionResolver(ควรจะดีพอข้อยกเว้นของฉันไม่มีอะไรพิเศษ) แต่สิ่งนี้ไม่ส่งคืนอะไรเลยในการตอบกลับฉันได้รับสถานะ 200 และเนื้อความว่างเปล่า มีวิธีใดที่ดีในการจัดการกับปัญหานี้หรือไม่? ขอบคุณ

7
สร้างไดเร็กทอรีหากไม่มีอยู่แล้วสร้างไฟล์ในไดเร็กทอรีนั้นด้วย
เงื่อนไขคือถ้ามีไดเร็กทอรีจะต้องสร้างไฟล์ในไดเร็กทอรีเฉพาะนั้นโดยไม่ต้องสร้างไดเร็กทอรีใหม่ โค้ดด้านล่างนี้สร้างเฉพาะไฟล์ที่มีไดเร็กทอรีใหม่ แต่ไม่ใช่สำหรับไดเร็กทอรีที่มีอยู่ ตัวอย่างเช่นชื่อไดเรกทอรีจะเป็น "GETDIRECTION" String PATH = "/remote/dir/server/"; String fileName = PATH.append(id).concat(getTimeStamp()).append(".txt"); String directoryName = PATH.append(this.getClassName()); File file = new File(String.valueOf(fileName)); File directory = new File(String.valueOf(directoryName)); if(!directory.exists()){ directory.mkdir(); if(!file.exists() &amp;&amp; !checkEnoughDiskSpace()){ file.getParentFile().mkdir(); file.createNewFile(); } } FileWriter fw = new FileWriter(file.getAbsoluteFile()); BufferedWriter bw = new BufferedWriter(fw); bw.write(value); bw.close();
119 java  java-io 

9
วิธีการทำให้ Joda DateTime เป็นอนุกรมกับโปรเซสเซอร์ Jackson JSON
ฉันจะให้แจ็คสันทำให้เป็นซีเรียลไลซ์อ็อบเจ็กต์ Joda DateTime ตามรูปแบบง่ายๆ (เช่น "dd-MM-yyyy") ได้อย่างไร ฉันพยายามแล้ว: @JsonSerialize(using=DateTimeSerializer.class) private final DateTime date; ฉันได้ลองแล้ว: ObjectMapper mapper = new ObjectMapper() .getSerializationConfig() .setDateFormat(df); ขอบคุณ!
118 java  json  jodatime  jackson 

17
Android: จะขยายภาพให้มีความกว้างของหน้าจอได้อย่างไรโดยที่ยังคงอัตราส่วนไว้
ฉันต้องการดาวน์โหลดภาพ (ไม่ทราบขนาด แต่มักจะเป็นสี่เหลี่ยมจัตุรัส) และแสดงให้เต็มหน้าจอในแนวนอนและยืดออกในแนวตั้งเพื่อรักษาอัตราส่วนของภาพในทุกขนาดหน้าจอ นี่คือรหัส (ไม่ทำงาน) ของฉัน มันยืดภาพในแนวนอน แต่ไม่ใช่แนวตั้งดังนั้นมันจึงถูกบีบ ... ImageView mainImageView = new ImageView(context); mainImageView.setImageBitmap(mainImage); //downloaded from server mainImageView.setScaleType(ScaleType.FIT_XY); //mainImageView.setAdjustViewBounds(true); //with this line enabled, just scales image down addView(mainImageView,new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
118 java  android  layout 

6
แลมบ์ดาที่มีลูกศร 2 ตัวใน Java 8 หมายถึงอะไร
ฉันเคยอ่านบทแนะนำ Java 8 มาแล้วหลายครั้ง ตอนนี้ฉันพบหัวข้อต่อไปนี้: java รองรับ Currying หรือไม่? ที่นี่ฉันเห็นรหัสต่อไปนี้: IntFunction&lt;IntUnaryOperator&gt; curriedAdd = a -&gt; b -&gt; a + b; System.out.println(curriedAdd.apply(1).applyAsInt(12)); ฉันเข้าใจว่าตัวอย่างนี้รวม 2 องค์ประกอบ แต่ฉันไม่เข้าใจโครงสร้าง: a -&gt; b -&gt; a + b; ตามส่วนซ้ายของนิพจน์แถวนี้ควรใช้ฟังก์ชันต่อไปนี้: R apply(int value); ก่อนหน้านี้ฉันได้พบกับลูกศรเพียงลูกเดียวเท่านั้น
118 java  lambda  java-8  currying 

7
Java - รับอาร์เรย์พิกเซลจากรูปภาพ
ฉันกำลังมองหาวิธีที่เร็วที่สุดในการรับข้อมูลพิกเซล (int แบบฟอร์มint[][]) จากไฟล์BufferedImage. เป้าหมายของฉันคือสามารถกำหนดพิกเซล(x, y)จากรูปภาพโดยใช้ไฟล์int[x][y]. วิธีการทั้งหมดที่ฉันพบไม่ทำเช่นนี้ (ส่วนใหญ่ส่งคืนint[]s)

4
ผลของตัวดำเนินการ Bitwise บนบูลีนใน Java
ตัวดำเนินการระดับบิตควรจะเดินทางตัวแปรและดำเนินการทีละนิด ในกรณีของจำนวนเต็ม longs ตัวอักษรนี้เหมาะสม ตัวแปรเหล่านี้สามารถมีค่าเต็มช่วงบังคับตามขนาด อย่างไรก็ตามในกรณีของบูลีนบูลีนสามารถมีได้เพียงสองค่าเท่านั้น 1 = จริงหรือ 0 = เท็จ แต่ไม่ได้กำหนดขนาดของบูลีน อาจมีขนาดใหญ่เท่าไบต์หรือเล็กหน่อยก็ได้ แล้วผลของการใช้ตัวดำเนินการแบบบิตต่อบูลีนคืออะไร? JVM แปลเป็นตัวดำเนินการตรรกะปกติและดำเนินการต่อไปหรือไม่? มันถือว่าบูลีนเป็นเอนทิตีบิตเดียวสำหรับวัตถุประสงค์ของการดำเนินการหรือไม่? หรือผลลัพธ์ไม่ได้กำหนดพร้อมกับขนาดของบูลีน?

8
java.util.regex - ความสำคัญของ Pattern.compile ()?
ความสำคัญของPattern.compile()วิธีการคืออะไร? เหตุใดฉันจึงต้องคอมไพล์สตริง regex ก่อนที่จะรับMatcherวัตถุ ตัวอย่างเช่น : String regex = "((\\S+)\\s*some\\s*"; Pattern pattern = Pattern.compile(regex); // why do I need to compile Matcher matcher = pattern.matcher(text);
118 java  regex 

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