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

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

13
วิธีการใช้ toString ใน Java
ใครช่วยอธิบายแนวคิดของtoString()วิธีการที่กำหนดไว้ในObjectคลาสให้ฉันได้ไหม มันใช้อย่างไรและมีจุดประสงค์อะไร?
118 java 

6
โครงสร้างถั่วสำรอง JSF (แนวทางปฏิบัติที่ดีที่สุด)
ฉันหวังว่าในโพสต์นี้ฉันจะได้รับความคิดเห็นของผู้คนเกี่ยวกับแนวทางปฏิบัติที่ดีที่สุดสำหรับอินเทอร์เฟซระหว่างหน้า JSF และถั่วสำรอง สิ่งหนึ่งที่ฉันไม่สามารถทำได้คือโครงสร้างของถั่วสำรองของฉัน นอกจากนี้ฉันไม่เคยพบบทความที่ดีเกี่ยวกับเรื่องนี้ คุณสมบัติอะไรที่อยู่ในถั่วสำรอง? เมื่อใดจึงเหมาะสมที่จะเพิ่มคุณสมบัติเพิ่มเติมให้กับถั่วที่กำหนดเมื่อเทียบกับการสร้าง bean ใหม่และเพิ่มคุณสมบัติลงไป สำหรับการใช้งานที่เรียบง่ายควรมีแบ็คกิ้งบีนเพียงอันเดียวสำหรับทั้งหน้าโดยพิจารณาถึงความซับซ้อนที่เกี่ยวข้องกับการฉีดถั่วหนึ่งเข้าไปในอีกอันหนึ่ง backing bean ควรมีตรรกะทางธุรกิจจริงหรือไม่หรือควรมีข้อมูลอย่างเคร่งครัด? อย่าลังเลที่จะตอบคำถามเหล่านี้และคำถามอื่น ๆ ที่อาจเกิดขึ้น สำหรับการลดการเชื่อมต่อระหว่างเพจ JSF และแบ็คกิ้งบีนฉันไม่เคยอนุญาตให้เพจ JSF เข้าถึงคุณสมบัติของแบ็คกิ้งบีน ตัวอย่างเช่นฉันไม่อนุญาตบางสิ่งเช่น: <h:outputText value="#{myBean.anObject.anObjectProperty}" /> ฉันต้องการบางสิ่งบางอย่างเช่น: <h:outputText value="#{myBean.theObjectProperty}" /> ด้วยค่าถั่วสำรองที่: public String getTheObjectProperty() { return anObject.getAnObjectProperty(); } เมื่อฉันวนซ้ำคอลเลกชันฉันใช้คลาส wrapper เพื่อหลีกเลี่ยงการเจาะลึกลงไปในวัตถุในตารางข้อมูลเป็นต้น โดยทั่วไปแนวทางนี้ให้ความรู้สึก "ถูกต้อง" สำหรับฉัน หลีกเลี่ยงการมีเพศสัมพันธ์ระหว่างมุมมองและข้อมูล กรุณาแก้ไขฉันถ้าฉันผิด
118 java  jsf 

8
สร้าง Eclipse Java Project จาก Command Line
มีวิธีคอมไพล์โปรเจ็กต์ Java ที่ใช้ Eclipse จากบรรทัดรับคำสั่งหรือไม่? ฉันกำลังพยายามสร้างบิลด์ของฉันโดยอัตโนมัติ (โดยใช้ FinalBuilder ไม่ใช่มด) และฉันไม่ใช่ผู้เชี่ยวชาญด้าน Java หรือ Eclipse ฉันสามารถหาวิธีทำได้ด้วยตัวเลือกบรรทัดคำสั่ง java แบบตรง แต่โปรเจ็กต์ Eclipse รู้สึกว่าเสียความพยายามไปมาก ในกรณีที่ไม่มีวิธีการคอมไพล์โปรเจ็กต์ Eclipse ผ่านทางบรรทัดคำสั่งมีวิธีสร้างบรรทัดคำสั่ง java ที่ต้องการจากภายใน Eclipse หรือไม่? หรือมีไฟล์บางไฟล์ที่ฉันสามารถค้นหาขั้นตอนการคอมไพล์ที่ทำอยู่เบื้องหลังได้หรือไม่? Guys, ฉันกำลังมองหาคำตอบที่ไม่ไม่รวมถึงมด ให้ฉันทบทวนคำถามเดิมอีกครั้ง ....... มีวิธีสร้างโปรเจ็กต์ Eclipse จากบรรทัดคำสั่งหรือไม่? ฉันไม่คิดว่านี่เป็นคำถามที่ไม่สมเหตุสมผลเนื่องจากฉันสามารถทำอะไรแบบนี้กับสตูดิโอวิชวล: devenv.exe /build "Debug|Any CPU" "C:\Projects\MyProject\source\MyProject.sln"

10
JUnit: วิธีหลีกเลี่ยง "ไม่มีวิธีที่รันได้" ในคลาสเครื่องมือทดสอบ
ฉันเปลี่ยนมาใช้ JUnit4.4 จาก JUnit3.8 ฉันเรียกใช้การทดสอบโดยใช้มดการทดสอบทั้งหมดของฉันทำงานได้สำเร็จ แต่คลาสยูทิลิตี้การทดสอบล้มเหลวโดยมีข้อผิดพลาด "ไม่มีวิธีที่รันได้" รูปแบบที่ฉันใช้คือการรวมคลาสทั้งหมดที่มีชื่อ * ทดสอบ * ไว้ในโฟลเดอร์ทดสอบ ฉันเข้าใจว่านักวิ่งไม่พบวิธีการใด ๆ ที่มีคำอธิบายประกอบด้วยแอตทริบิวต์ @Test แต่ไม่มีคำอธิบายประกอบดังกล่าวเนื่องจากชั้นเรียนเหล่านี้ไม่ใช่การทดสอบ น่าแปลกที่เมื่อเรียกใช้การทดสอบเหล่านี้ใน eclipse ก็ไม่ได้บ่นเกี่ยวกับคลาสเหล่านี้ ใน JUnit3.8 ไม่ใช่ปัญหาเลยเนื่องจากคลาสยูทิลิตี้เหล่านี้ไม่ได้ขยาย TestCase ดังนั้นนักวิ่งจึงไม่พยายามเรียกใช้งาน ฉันรู้ว่าฉันสามารถยกเว้นคลาสเฉพาะเหล่านี้ในเป้าหมาย junit ใน ant script ได้ แต่ฉันไม่ต้องการเปลี่ยนไฟล์บิวด์ในทุกคลาสยูทิลิตี้ใหม่ที่ฉันเพิ่ม ฉันยังสามารถเปลี่ยนชื่อชั้นเรียนได้ (แต่การตั้งชื่อชั้นเรียนให้ดีเป็นความสามารถที่อ่อนแอที่สุดของฉันเสมอ :-)) มีวิธีแก้ปัญหาที่สวยงามสำหรับปัญหานี้หรือไม่?
118 java  ant  junit  testing 


13
วิธีที่ดีที่สุดในการกำหนดรหัส / สตริงข้อผิดพลาดใน Java?
ผมเขียนบริการเว็บใน Java และฉันกำลังพยายามที่จะคิดออกวิธีที่ดีที่สุดในการกำหนดรหัสข้อผิดพลาดและสตริงข้อผิดพลาดที่เกี่ยวข้อง ฉันต้องมีรหัสข้อผิดพลาดที่เป็นตัวเลขและสตริงข้อผิดพลาดที่รวมกลุ่มกัน ทั้งรหัสข้อผิดพลาดและสตริงข้อผิดพลาดจะถูกส่งไปยังไคลเอนต์ที่เข้าถึงบริการเว็บ ตัวอย่างเช่นเมื่อเกิด SQLException ฉันอาจต้องการทำสิ่งต่อไปนี้: // Example: errorCode = 1, // errorString = "There was a problem accessing the database." throw new SomeWebServiceException(errorCode, errorString); โปรแกรมไคลเอ็นต์อาจแสดงข้อความ: "เกิดข้อผิดพลาด # 1: มีปัญหาในการเข้าถึงฐานข้อมูล" ความคิดแรกของฉันคือการใช้Enumรหัสข้อผิดพลาดและแทนที่toStringวิธีการในการส่งคืนสตริงข้อผิดพลาด นี่คือสิ่งที่ฉันคิดขึ้น: public enum Errors { DATABASE { @Override public String toString() { return "A database error has …
118 java  enums 

7
อะไรคือความแตกต่างระหว่างภาษาที่รวบรวมและแปลความหมาย?
หลังจากอ่านเนื้อหาบางส่วนเกี่ยวกับเรื่องนี้แล้วฉันยังไม่แน่ใจว่าความแตกต่างระหว่างภาษาคอมไพล์และภาษาที่ตีความหมายคืออะไร ฉันบอกว่านี่เป็นหนึ่งในความแตกต่างระหว่าง Java และ JavaScript มีใครช่วยฉันทำความเข้าใจได้ไหม


12
จะสร้าง HashMap ด้วยปุ่มสองปุ่ม (Key-Pair, Value) ได้อย่างไร?
ฉันมีอาร์เรย์ 2 มิติของจำนวนเต็ม ฉันต้องการให้ใส่ลงใน HashMap แต่ฉันต้องการเข้าถึงองค์ประกอบจาก HashMap ตามดัชนีอาร์เรย์ สิ่งที่ต้องการ: สำหรับ A [2] [5] map.get(2,5)ซึ่งส่งคืนค่าที่เกี่ยวข้องกับคีย์นั้น แต่ฉันจะสร้างแฮชแมปด้วยคีย์คู่ได้อย่างไร หรือโดยทั่วไปหลายคีย์: Map<((key1, key2,..,keyN), Value)ในวิธีที่ฉันสามารถเข้าถึงองค์ประกอบโดยใช้ get (key1, key2, ... keyN) แก้ไข: 3 ปีหลังจากโพสต์คำถามฉันต้องการเพิ่มอีกเล็กน้อย ฉันข้ามมาอีกทางสำหรับNxN matrix. ดัชนีอาร์เรย์iและjสามารถแสดงเป็นวิธีเดียวkeyดังต่อไปนี้: int key = i * N + j; //map.put(key, a[i][j]); // queue.add(key); และสามารถเรียกดูดัชนีได้keyด้วยวิธีนี้: int i = key / N; int …
118 java  hash  hashmap  hashcode 


3
PermGen กับ Metaspace ต่างกันอย่างไร?
จนกระทั่ง Java 7 มีพื้นที่ในหน่วยความจำ JVM ที่เรียกว่าPermGenซึ่ง JVM ใช้เพื่อเก็บคลาสไว้ ในJava 8มันถูกลบออกไปและแทนที่ด้วยพื้นที่ที่เรียกว่าMetaspace อะไรคือความแตกต่างที่สำคัญที่สุดระหว่าง PermGen และ Metaspace? ข้อแตกต่างเดียวที่ฉันรู้คือjava.lang.OutOfMemoryError: PermGen spaceไม่สามารถโยนได้อีกต่อไปและพารามิเตอร์ VM MaxPermSizeจะถูกละเว้น

13
คำสั่งสวิตช์ Java หลายกรณี
เพียงแค่พยายามหาวิธีใช้หลาย ๆ กรณีสำหรับคำสั่งสวิตช์ Java นี่คือตัวอย่างของสิ่งที่ฉันพยายามทำ: switch (variable) { case 5..100: doSomething(); break; } เมื่อเทียบกับต้องทำ: switch (variable) { case 5: case 6: etc. case 100: doSomething(); break; } ความคิดใด ๆ ถ้าเป็นไปได้หรือทางเลือกที่ดีคืออะไร?

21
CompareTo () เทียบกับเท่ากับ ()
เมื่อทดสอบความเท่าเทียมกันของStringJava ฉันใช้มาตลอดequals()เพราะสำหรับฉันแล้วนี่เป็นวิธีที่เป็นธรรมชาติที่สุดสำหรับฉัน ท้ายที่สุดชื่อของมันก็บอกอยู่แล้วว่าตั้งใจจะทำอะไร แต่เพื่อนร่วมงานของผมเพิ่งบอกฉันได้รับการสอนที่จะใช้แทนcompareTo() == 0 equals()สิ่งนี้ให้ความรู้สึกผิดธรรมชาติ (ตามที่compareTo()ตั้งใจไว้เพื่อให้มีการสั่งซื้อและไม่เปรียบเทียบเพื่อความเท่าเทียมกัน) และถึงแม้จะค่อนข้างอันตราย (เพราะcompareTo() == 0ไม่จำเป็นต้องหมายความถึงความเท่าเทียมกันในทุกกรณีแม้ว่าฉันจะรู้ว่ามันทำStringเพื่อฉันก็ตาม) เขาไม่ทราบว่าทำไมเขาถูกสอนให้ใช้compareTo()แทนequals()สำหรับString's, และฉันจะยังไม่พบเหตุผลใด ๆ นี่เป็นเรื่องของรสนิยมส่วนตัวจริงๆหรือมีเหตุผลที่แท้จริงสำหรับวิธีใดวิธีหนึ่ง?
118 java  string  equals  compareto 

3
วิธีตรวจสอบว่าองค์ประกอบมีอยู่โดยใช้นิพจน์แลมบ์ดาหรือไม่?
โดยเฉพาะฉันมี TabPane และฉันต้องการทราบว่ามีองค์ประกอบที่มี ID เฉพาะอยู่หรือไม่ ดังนั้นฉันต้องการทำสิ่งนี้ด้วยแลมบ์ดานิพจน์ใน Java: boolean idExists = false; String idToCheck = "someId"; for (Tab t : tabPane.getTabs()){ if(t.getId().equals(idToCheck)) { idExists = true; } }
118 java  java-8  lambda 

5
Java 8 เป็นวิธีที่ดีในการทำซ้ำค่าหรือฟังก์ชันหรือไม่?
ในภาษาอื่น ๆ อีกมากมายเช่น Haskell เป็นเรื่องง่ายที่จะทำซ้ำค่าหรือฟังก์ชันหลาย ๆ ครั้งเช่น เพื่อรับรายการ 8 สำเนาของค่า 1: take 8 (repeat 1) แต่ฉันยังไม่พบสิ่งนี้ใน Java 8 มีฟังก์ชันดังกล่าวใน JDK ของ Java 8 หรือไม่? หรืออีกทางเลือกหนึ่งที่เทียบเท่ากับช่วงเช่น [1..8] ดูเหมือนว่าจะแทนที่คำสั่ง verbose ใน Java ได้อย่างชัดเจนเช่น for (int i = 1; i <= 8; i++) { System.out.println(i); } จะมีบางอย่างเช่น Range.from(1, 8).forEach(i -> System.out.println(i)) แม้ว่าตัวอย่างนี้จะดูไม่กระชับเท่าไหร่นัก ... …
118 java  java-8 

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