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

Java เป็นภาษาการเขียนโปรแกรมเชิงวัตถุในระดับสูงที่พัฒนาโดย Sun Microsystems ปัจจุบัน Java เป็นเจ้าของโดย Oracle ซึ่งซื้อ Sun ในปี 2010

2
JVM จัดการข้อยกเว้นที่เกิดจากวิธีหลักอย่างไร
ฉันเข้าใจข้อยกเว้นขว้างพวกมันจัดการพวกมันและแพร่กระจายมันไปยังวิธีที่ต่ำกว่าใน call stack (เช่นthrows) สิ่งที่ฉันไม่เข้าใจคือ: public static void main(String[] args) throws Exception { ... } ตอนนี้ฉันคิดว่าในกรณีที่mainมีการโยนExceptionJVM จัดการ (ถูกต้อง?) หากเป็นเช่นนั้นคำถามของฉันคือ: JVM จัดการข้อยกเว้นที่ส่งออกมาmainอย่างไร มันทำอะไร?
10 java  exceptions  jvm 

3
การสืบทอด: เป็นรหัสจาก superclass จริง * คัดลอก * ไปยังคลาสย่อยหรือเป็น * อ้างถึงโดย subclass *?
ชั้นSubเป็น subclass Supของชั้นเรียน นั่นหมายความว่าในทางปฏิบัติจริง ๆ ? หรือกล่าวอีกนัยหนึ่งความหมายในทางปฏิบัติของ "การสืบทอด" คืออะไร? ตัวเลือกที่ 1:รหัสจาก Sup จะถูกคัดลอกไปยัง Sub อย่างแท้จริง (เหมือนใน 'copy-paste' แต่ไม่มีโค้ดที่คัดลอกที่มองเห็นได้ในคลาสย่อย) ตัวอย่าง: methodA()เป็นวิธีการดั้งเดิมใน Sup Sub ขยาย Sup ดังนั้นจึงmethodA()เป็น (แทบ) คัดลอกวางไปที่ Sub methodA()ตอนนี้ตมีวิธีการตั้งชื่อ มันเหมือนกับของ Sup methodA()ในทุกบรรทัดของโค้ด แต่เป็นของ Sub - ทั้งหมดและไม่ขึ้นกับ Sup หรือเกี่ยวข้องกับ Sup ในทางใดทางหนึ่ง ตัวเลือกที่ 2:รหัสจาก Sup ไม่ได้ถูกคัดลอกไปยัง Sub จริง ๆ มันยังคงอยู่ในซูเปอร์คลาสเท่านั้น แต่โค้ดนั้นสามารถเข้าถึงได้ผ่านคลาสย่อยและสามารถใช้งานได้โดยคลาสย่อย ตัวอย่าง: …

4
วิธีที่เร็วที่สุดในการแยกสตริงแบบมีตัวคั่นใน Java
ฉันกำลังสร้างเครื่องมือเปรียบเทียบที่ให้ความสามารถในการจัดเรียงหลายคอลัมน์ในสตริงแบบมีตัวคั่น ขณะนี้ฉันกำลังใช้วิธีการแยกจากคลาส String เป็นตัวเลือกที่ฉันต้องการสำหรับการแยกสตริงดิบเป็นโทเค็น นี่เป็นวิธีที่มีประสิทธิภาพดีที่สุดในการแปลงสตริงดิบเป็นอาร์เรย์สตริงหรือไม่ ฉันจะเรียงลำดับแถวนับล้านดังนั้นฉันคิดว่าวิธีการที่สำคัญ ดูเหมือนว่าจะทำงานได้ดีและง่ายมาก แต่ไม่แน่ใจว่ามีวิธีที่เร็วกว่าใน java นี่คือวิธีการเรียงลำดับใน Comparator ของฉัน: public int compare(String a, String b) { String[] aValues = a.split(_delimiter, _columnComparators.length); String[] bValues = b.split(_delimiter, _columnComparators.length); int result = 0; for( int index : _sortColumnIndices ) { result = _columnComparators[index].compare(aValues[index], bValues[index]); if(result != 0){ break; } } …

4
รูปแบบการออกแบบใดที่เหมาะสมกว่าสำหรับการบันทึก
ฉันควรบันทึกเหตุการณ์บางอย่างในโปรแกรม แต่เท่าที่ฉันรู้จะเป็นการดีกว่าถ้าจะเก็บรหัสการบันทึกภายนอกโปรแกรมเพราะมันไม่เกี่ยวกับการใช้งานจริงของโปรแกรม ดังนั้นคุณช่วยบอกฉันได้ไหมว่าฉันควรเก็บรหัสนี้เอาไว้อย่างสมบูรณ์และใช้ผู้สังเกตการณ์และผู้ฟังเพื่อบันทึกเหตุการณ์เท่านั้นหรือไม่ หรือฉันสามารถเพิ่มบรรทัดของรหัสเช่นต่อไปนี้ทุกที่ที่ฉันต้องการบันทึกบางสิ่งบางอย่าง: MyGloriousLogger.getXXXLogger().Log(LogPlace, new LogObject(z1, z2, z3, z4, ..., z99)); ฉันทำผิดพลาดในการใช้รูปแบบการออกแบบของ Observer หรือไม่ ฉันต้องการรูปแบบการออกแบบอื่นหรือไม่ หรือฉันควรหยุดคิดเกี่ยวกับรูปแบบการออกแบบ? PS1 หากฉันต้องการเข้าสู่ระบบโดยใช้ผู้ฟังและผู้สังเกตการณ์เท่านั้นฉันจะต้องเพิ่มและปรับปรุงผู้สังเกตการณ์และผู้ฟังของโปรแกรมอย่างแน่นอน PS2 แน่นอนฉันรู้ว่ามีห้องสมุดที่แตกต่างกันสำหรับการเข้าสู่ระบบใน Java และฉันใช้ java.utils.logging แต่ฉันต้องมี wrapper เพื่อเข้าสู่ระบบวัตถุพิเศษของฉัน

4
การนำอินเตอร์เฟซทั่วไปหลาย ๆ ตัวมาใช้ในจาวา
ฉันต้องการอินเทอร์เฟซที่ทำให้ฉันมั่นใจว่ามีวิธีการบางอย่างรวมถึงลายเซ็นเฉพาะ จนถึงตอนนี้เขาคือสิ่งที่ฉันมี: public interface Mappable<M> { M mapTo(M mappableEntity); } ปัญหาเกิดขึ้นเมื่อคลาสควรแม็พกับเอนทิตีอื่น ๆ กรณีที่เหมาะสมที่สุดคือ (ไม่ใช่ java): public class Something implements Mappable<A>, Mappable<B> { public A mapTo(A someObject) {...} public B mapTo(B someOtherObject) {...} } อะไรจะเป็นวิธีที่ดีที่สุดในการบรรลุถึงสิ่งที่เหลืออยู่นี้ให้เป็น "สามัญ" ที่สุด
10 java  generics 

3
วิธีซิงค์นาฬิกาผ่านเครือข่ายเพื่อการพัฒนาเกม
ฉันกำลังเขียนเกมที่มีหลายแง่มุมตามเวลา ฉันใช้เวลาเพื่อช่วยประเมินตำแหน่งผู้เล่นเมื่อเครือข่ายแผงลอยและแพ็กเก็ตไม่ผ่าน (และเวลาระหว่างการรับแพ็คเก็ตและไม่ได้) มันเป็นเกมประเภท Pacman ในแง่ที่ว่าผู้เล่นเลือกทิศทางและไม่สามารถหยุดเคลื่อนไหวได้ดังนั้นระบบจึงมีเหตุผล (หรืออย่างน้อยฉันก็คิดว่ามันเป็นอย่างนั้น) ดังนั้นฉันมีสองคำถาม: 1) ฉันจะซิงค์นาฬิกาของเกมตั้งแต่เริ่มต้นอย่างไรเนื่องจากเครือข่ายล่าช้า 2) ไม่เป็นไรหรือไม่ที่จะซิงค์พวกเขาและเพียงสมมติว่าพวกเขาเหมือนกัน (รหัสของฉันคือเขตเวลาอิสระ) ไม่ใช่เกมที่มีการแข่งขันสูงที่ผู้คนจะเปลี่ยนนาฬิกาเป็นโกง แต่ก็ยัง เกมกำลังเขียนโปรแกรมใน Java และ Python (การพัฒนาแบบขนานเป็นโครงการ)

4
แทนอินสแตนซ์ของ Java?
ดังนั้นฉันค่อนข้างใหม่ในการเขียนโปรแกรมในโลกแห่งความเป็นจริง (นอกโครงการวิชาการ) และได้เจอโพสต์มากมายบอกว่าการใช้instanceofเป็นสิ่งที่ไม่ดีที่จะใช้เพื่อกำหนดว่าวัตถุที่เฉพาะเจาะจงในชั้นเรียนคืออะไร สถานการณ์ของฉันคือว่าฉันมีสามคลาสคลาสผลิตภัณฑ์พื้นฐานที่หนึ่งขยายออกและอื่น ๆ ที่ขยายนั้น ทั้งหมดนี้เก็บไว้ในตารางเดียวกันในฐานข้อมูลและฉันมีรหัสบางอย่างที่จำเป็นต้องใช้วิธีการในการดึงข้อมูลออกจากพวกเขา การปฏิบัติที่ดีที่สุดในการหลีกเลี่ยงวิธีนี้คืออะไร? ฉันได้อ่านบางอย่างเกี่ยวกับ polymorphism แล้ว แต่ฉันไม่พบตัวอย่างใด ๆ ที่แก้ไขปัญหาที่ฉันมี พวกเขามักจะแทนที่วิธีการที่ฉันใช้ไม่ได้เพราะฉันต้องดึงสิ่งต่าง ๆ จากวัตถุต่าง ๆ มีวิธีที่ดีกว่าในการทำเช่นนี้หรือฉันติดอยู่กับการใช้instanceofหรือการสะท้อนบางอย่างเพื่อให้ได้ฟิลด์ที่เฉพาะเจาะจงกับวัตถุ

3
ทำไมค่าต่ำสุดของ ints, double, etc 1 ไกลจากศูนย์มากกว่าค่าบวก
ฉันรู้ว่ามันมีส่วนเกี่ยวข้องกับส่วนประกอบของ 2 และการเพิ่ม 1 แต่ฉันไม่เข้าใจวิธีที่คุณสามารถเข้ารหัสตัวเลขอีกหนึ่งจำนวนที่มีจำนวนบิตเท่ากันเมื่อมันเป็นจำนวนลบ
10 java  numbers 

3
การใช้ MVC ในแอป Java
ฉันต้องเขียนแอปพลิเคชัน GUI ข้ามแพลตฟอร์มเพื่อประมวลผล (ในหลายเธรด) และเห็นภาพข้อมูลจำนวนมากพอสมควร แอปพลิเคชั่นควรจะค่อนข้างเร็วและดูดี อินเทอร์เฟซของแอพจะประกอบด้วยวิดเจ็ตตารางวิดเจ็ตต้นไม้และวิดเจ็ตรูปวาดเอง ผู้ใช้จะสามารถแก้ไขข้อมูลจากหนึ่งในวิดเจ็ตเหล่านี้และการเปลี่ยนแปลงควรจะปรากฏในวิดเจ็ตอื่นทันที โดยธรรมชาติฉันกำลังวางแผนที่จะใช้ MVC อย่างไรก็ตามปกติแล้วฉันจะเขียนโปรแกรม GUI ทั้งหมดใน C ++ / Qt และมีการเปิดรับจาวา จำกัด ดังนั้นฉันจะขอขอบคุณคำแนะนำใด ๆ เกี่ยวกับวิธีการจัดระเบียบแอปใน Java โดยเฉพาะฉันควรใช้ Swing หรือ JavaFX หรือไม่ วิดเจ็ตใดที่คุณจะเลือกสำหรับงาน คุณช่วยแนะนำหนังสือ / บทช่วยสอนออนไลน์ที่ครอบคลุมประเด็นเหล่านี้ของแพลตฟอร์ม Java ได้หรือไม่? ฉันจะขอขอบคุณสำหรับข้อเสนอแนะใด ๆ ขอบคุณ! (คำถามนี้ถูกโพสต์ครั้งแรกใน Stack Overflowแต่เว็บไซต์นี้ได้รับการแนะนำว่าเป็นสถานที่ที่เหมาะสมกว่าในการถาม)
10 java  mvc  swing  javafx 

11
ฉันต้องเรียนรู้ html และ javascript เพื่อสร้างเว็บแอปพลิเคชันหรือไม่ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันเป็นโปรแกรมเมอร์ Java ที่มีประสบการณ์และฉันต้องการสร้างแอปพลิเคชันบนเว็บที่ซับซ้อนซึ่งต้องการหน้าแบบไดนามิกภาพวาดและอื่น ๆ (ยกตัวอย่างเช่น) ฉันต้องเรียนรู้ javascript / html เพื่อสร้างแอปพลิเคชันดังกล่าวหรือไม่? ไม่ใช่ว่าฉันไม่ต้องการที่จะเรียนรู้ภาษาอื่น (ฉันเคยทำมาก่อนแล้ว) แต่เทคโนโลยีในสภาพแวดล้อมแบบจาวาสคริปต์ดูเหมือนว่าจะเปลี่ยนแปลงเร็วมากเมื่อคุณเรียนรู้กรอบหนึ่งมันก็ล้าสมัยไปแล้ว ฉันได้ตรวจสอบจาวาเฟรมเวิร์กจำนวนหนึ่งสำหรับการพัฒนาเว็บไซต์ (spring, play) แต่ไม่ลึกมาก ดังนั้นกรอบเหล่านี้ (หรือกรอบจาวาอื่น ๆ ที่เป็นไปได้ที่ฉันไม่ทราบ) สามารถใช้ได้โดยไม่ต้องเรียนรู้ html / javascript หรือไม่ ฉันยังมีประสบการณ์หลาม ดังนั้นถ้าฉันสามารถทำแอพในหลามมันก็เป็นตัวเลือกเช่นกัน

4
อะไรคือความแตกต่างระหว่างการโหลดเมธอดและการแทนที่ใน Java?
อะไรคือความแตกต่างระหว่างการโหลดเมธอดและการแทนที่ใน Java? ลายเซ็นของเมธอด, ตัวระบุการเข้าถึง, ชนิดส่งคืนมีความแตกต่างกันหรือไม่?

1
แนวคิดมันหมายความว่าอย่างไรเมื่อมีการกล่าวว่าแต่ละเธรดได้รับสแต็กของตัวเอง?
ฉันได้อ่านJava Concurrency ในทางปฏิบัติโดย Brian Goetz และในส่วนStack Confinementมีการกล่าวถึงว่าแต่ละเธรดได้รับสแต็กของตัวเองและตัวแปรในเครื่องจึง จำกัด อยู่ภายในเธรดที่กำลังดำเนินการ มีอยู่ในเธรดที่กำลังเรียกใช้งานซึ่งไม่สามารถเข้าถึงได้กับเธรดอื่น เขาหมายความว่าอะไรที่แต่ละเธรดมีสแตกการเรียกใช้ของตนเอง

3
Java applets มีสถานที่ใด ๆ บนเว็บในวันนี้? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา เบราว์เซอร์จำนวนมากปิดใช้งานแอปเพล็ต Java ตามค่าเริ่มต้นทำให้เบราว์เซอร์เปิดใช้งานในแต่ละหน้า ดูเหมือนว่าแอปเพล็ตไม่ได้เปลี่ยนแปลงมากนักในช่วงไม่กี่ปีที่ผ่านมา ในความเป็นจริงดูเหมือนว่า Java ฝั่งไคลเอ็นต์ (แอปเพล็ต, แอปพลิเคชันเดสก์ท็อป, ... ) กำลังจะตายอย่างสมบูรณ์และ Java กำลังกลายเป็นภาษาฝั่งเซิร์ฟเวอร์เป็นหลัก มีจุดที่แอพเล็ตยังคงมีประโยชน์ในเว็บของวันนี้หรือไม่? ในฐานะนักพัฒนาเว็บที่คุ้นเคยกับ Java และ JavaScript ทำไมฉันถึงเลือกใช้แอปเพล็ตแทน JavaScript บ้าง
10 java  html5 

6
การตีความหลักการ DRY
ตอนนี้ฉันกำลังดิ้นรนกับแนวคิด DRY (อย่าทำซ้ำตัวเอง) ในการเขียนโค้ดของฉัน ฉันกำลังสร้างฟังก์ชั่นนี้ซึ่งฉันกลัวว่ามันจะซับซ้อนเกินไป แต่ฉันพยายามทำตามหลักการของ DRY createTrajectoryFromPoint(A a,B b,C c,boolean doesSomething,boolean doesSomething2) ฟังก์ชั่นนี้ผมจะพูดจะใช้เวลาป้อนพารามิเตอร์ 3 แล้วการทำงานจะทำบางสิ่งบางอย่างที่แตกต่างกันเล็กน้อยที่ได้รับการผสมบูลและdoesSomething doesSomething2อย่างไรก็ตามปัญหาที่ฉันมีคือฟังก์ชั่นนี้เพิ่มขึ้นอย่างซับซ้อนด้วยพารามิเตอร์บูลีนใหม่ทุกตัวที่เพิ่มเข้ามา ดังนั้นคำถามของฉันคือดีกว่าที่จะมีฟังก์ชั่นต่าง ๆ มากมายที่ใช้ตรรกะเดียวกันจำนวนมาก (ดังนั้นละเมิดหลักการ DRY) หรือฟังก์ชั่นหนึ่งที่ทำงานแตกต่างกันเล็กน้อยตามจำนวนพารามิเตอร์ แต่ทำให้ซับซ้อนมากขึ้น (แต่ รักษา DRY) หรือไม่
10 java  design  dry 

3
วิธีการที่มากไปเหมาะสมเมื่อใด
สมมติว่าฉันกำลังทำงานกับระบบที่มีอยู่และมีขนาดใหญ่พอสมควร ฉันมีวัตถุmyObjectของคลาสMyClass(เพื่อประโยชน์ของตัวอย่างสมมติว่าฉันทำงานใน Java) myObjectเป็นองค์ประกอบที่ประกอบด้วย a Collection, say, a Listและวัตถุอื่น ๆ ที่ (ฉันคิดว่า) ไม่เกี่ยวข้อง มันมีวิธีการมอบหมายซึ่งเพียงแค่ให้บริการที่จะเรียกร้องให้วิธีการของListมันประกอบด้วยเพื่อให้แน่ใจว่าListมันจะไม่ได้สัมผัส (ขออภัยถ้าฉันมีคำศัพท์ของฉันผิด) Let 's พูดที่ว่านี้Listเป็นแต่ด้วยเหตุผลบางอย่างที่วิธีการเข้าถึงหลักเป็นวิธีหน้ากากสำหรับการเรียนList<String> SomeOtherClassถ้าผมอยากจะใส่คู่ค่าใหม่เข้าไปในของฉันListแล้วฉันมีวัตถุของที่เรียกว่าSomeOtherClass someObjectฉันต้องการโทรmyObject.insert(someObject)และภายในinsertวิธีการจะมีความมหัศจรรย์บางอย่างที่จะดึงข้อมูลที่จะใส่ลงไปในStringList<String> สมมติว่าตอนนี้ฉันมีStringค่าและไม่มีSomeOtherClassวัตถุที่จะแทรก สมมติว่าฉันไม่สามารถปรับเปลี่ยนinsertวิธีการเพราะมันจะทำลายทุกอย่างในระบบนี้ จากนั้นฉันควรใช้insertวิธีมากเกินไปหรือไม่ หรือฉันควรสร้างวัตถุใหม่ของSomeOtherClassเวลาที่ฉันต้องการที่จะเรียกทุกคนinsert? ฉันเดาว่าถ้าฉันทำมากไปมันจะมีลักษณะเช่นนี้ ... public void insert(String s) { ... } public void insert(SomeOtherObject obj) { this.insert(obj.magicStringMethod()); } (ตัวอย่างนี้เป็นจิ๊กซอว์ที่ออกแบบมาตามสถานการณ์ที่คล้ายกัน (ซับซ้อนกว่าเล็กน้อย) เกี่ยวกับการบรรทุกเกินพิกัดที่ฉันพบเมื่อวานนี้ฉันจะขยายมันหากมีสิ่งใดที่ไม่ชัดเจน) นี่เป็นสถานที่ที่เหมาะสมในการโอเวอร์โหลดเมธอดหรือไม่? ถ้าไม่ฉันควรโอเวอร์โหลดเมธอดเมื่อใด

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