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

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

4
ทำไมนักพัฒนา C # ขึ้นบรรทัดใหม่การเปิดวงเล็บ [ปิด]
ฉันใช้เวลาส่วนใหญ่ในช่วงหลายปีที่ผ่านมาทำงานเป็นหลักกับ C # และ SQL โปรแกรมเมอร์ทุกคนที่ฉันทำงานด้วยในช่วงเวลานั้นอยู่ในนิสัยของการวางวงเล็บเปิดของคำสั่งฟังก์ชั่นหรือการควบคุมการไหลของบรรทัดใหม่ ดังนั้น ... public void MyFunction(string myArgument) { //do stuff } if(myBoolean == true) { //do something } else { //do something else } ฉันได้รับการหลงโดยพื้นที่ที่สิ้นเปลืองนี้โดยเฉพาะในงบ / อื่น ๆ และฉันรู้ว่ามีตัวเลือกอื่นใน C # รุ่นที่ใหม่กว่าเช่น: if(myBoolean == true) //do something on one line of code แต่ไม่ค่อยมีใครใช้พวกเขา ทุกคนทำสิ่งที่หยิก - …
44 java  c#  javascript  syntax 

10
มีเหตุผลใดที่จะใช้คลาส "ข้อมูลเก่าแบบธรรมดา" หรือไม่?
ในรหัสดั้งเดิมบางครั้งฉันเห็นชั้นเรียนที่ไม่มีอะไรนอกจากห่อหุ้มข้อมูล สิ่งที่ต้องการ: class Bottle { int height; int diameter; Cap capType; getters/setters, maybe a constructor } ความเข้าใจของฉันเกี่ยวกับ OO คือคลาสเป็นโครงสร้างของข้อมูลและวิธีการทำงานกับข้อมูล ดูเหมือนว่าจะแยกประเภทของวัตถุนี้ สำหรับฉันพวกเขาไม่มีอะไรมากไปกว่าstructsและชนิดของความพ่ายแพ้วัตถุประสงค์ของ OO ฉันไม่คิดว่ามันจะเป็นสิ่งชั่วร้ายแม้ว่ามันอาจจะเป็นกลิ่นรหัส มีกรณีที่วัตถุดังกล่าวจะมีความจำเป็นหรือไม่? หากมีการใช้งานบ่อยมันจะทำให้ผู้ต้องสงสัยในการออกแบบหรือไม่

9
การเขียนโปรแกรมสำหรับการใช้อินเตอร์เฟสในอนาคต
ฉันมีเพื่อนร่วมงานนั่งถัดจากฉันที่ออกแบบอินเทอร์เฟซเช่นนี้: public interface IEventGetter { public List<FooType> getFooList(String fooName, Date start, Date end) throws Exception; .... } ปัญหาคือตอนนี้เราไม่ได้ใช้พารามิเตอร์ "สิ้นสุด" ที่ใดก็ได้ในรหัสของเรามันอยู่ที่นั่นเพราะเราอาจจะต้องใช้มันในอนาคต เรากำลังพยายามโน้มน้าวเขาว่าเป็นความคิดที่ดีที่จะใส่พารามิเตอร์ไว้ในส่วนต่อประสานที่ไม่ได้ใช้งานในตอนนี้ แต่เขายืนยันอย่างต่อเนื่องว่างานจำนวนมากจะต้องทำถ้าเราใช้วันที่ "สิ้นสุด" ในบางครั้ง ในภายหลังและต้องปรับรหัสทั้งหมดแล้ว ตอนนี้คำถามของฉันคือมีแหล่งที่จัดการหัวข้อเช่นนี้ของปรมาจารย์การเข้ารหัส "เคารพ" ที่เราสามารถเชื่อมโยงเขาไป?

8
ฟังก์ชั่นการเขียนโปรแกรมเป็นไปได้ใน Java? [ปิด]
ฉันถูกเรียกดูผ่าน Amazon.com ร้านหนังสือและฉันมาข้ามหนังสือ"หน้าที่ Programming สำหรับ Java Developers" ฉันรู้ว่าการเขียนโปรแกรมฟังก์ชั่นพื้นฐานบางอย่างและได้รับการเขียนโปรแกรมใน Java เป็นเวลา 3 ปี ฉันต้องการที่จะรู้ว่าฟังก์ชั่นการเขียนโปรแกรมเป็นไปได้แม้ใน Java?

4
Rich Hickey หมายความว่าอย่างไรเมื่อเขาพูดว่า“ ความพิเศษเฉพาะทั้งหมดของอินเทอร์เฟซ / คลาส / ประเภท] ฆ่าการใช้ซ้ำของคุณ!”
ในคำปราศรัยการประชุม goto ในการประชุมระดมความคิดที่กระตุ้นความคิดของ " มูลค่าของคุณค่า " ในเวลา 29 นาทีที่เขาพูดถึงค่าใช้จ่ายในภาษาจาวาและทำให้คำสั่งเช่น เขาหมายถึงอะไร มันเป็นเรื่องจริงเหรอ? ในการค้นหาคำตอบของฉันฉันเจอ: หลักการของความรู้น้อยที่สุด AKA กฎหมายของ Demeterซึ่งสนับสนุนการเชื่อมต่อ API แบบสุญญากาศ Wikipedia ยังแสดงข้อเสียบางประการ วิกฤตเสื้อผ้าของ Kevlin Henney ซึ่งระบุว่าการใช้ไม่ใช่การใช้ซ้ำเป็นเป้าหมายที่เหมาะสม การพูดคุยเรื่อง " Stop Writing Classes " ของ Jack Diederich ซึ่งขัดแย้งกับเรื่องวิศวกรรมโดยทั่วไป เห็นได้ชัดว่าสิ่งใดที่เขียนไม่ดีพอจะไร้ประโยชน์ แต่อินเทอร์เฟซของ API ที่เขียนดีจะป้องกันไม่ให้ใช้รหัสนั้นได้อย่างไร มีตัวอย่างตลอดประวัติศาสตร์ของบางสิ่งบางอย่างที่ทำขึ้นเพื่อจุดประสงค์เดียวที่ถูกใช้เพื่อสิ่งอื่นมากกว่า แต่ในโลกของซอฟต์แวร์ถ้าคุณใช้บางอย่างเพื่อจุดประสงค์ที่ไม่ได้มีไว้สำหรับมันก็มักจะแตก ฉันกำลังมองหาหนึ่งตัวอย่างที่ดีของอินเทอร์เฟซที่ดีที่ป้องกันไม่ให้ใช้รหัสบางอย่างถูกต้อง มีอยู่จริงเหรอ? ฉันไม่สามารถจินตนาการได้

8
จำเป็นต้องเพิ่มตัวพิมพ์เริ่มต้นในขณะที่ใช้ตัวเรือนสวิตช์หรือไม่
ในระหว่างการตรวจสอบโค้ดเมื่อเร็ว ๆ นี้ฉันถูกขอให้ใส่defaultเคสในไฟล์ทั้งหมดทุกที่ที่switchบล็อกถูกใช้แม้ว่าจะไม่มีอะไรทำdefaultก็ตาม นั่นหมายความว่าฉันต้องใส่defaultเคสและไม่เขียนอะไรเลย นี่เป็นสิ่งที่ถูกต้องหรือไม่ มันจะมีจุดประสงค์อะไร

8
ทำไม java.util.ArrayList อนุญาตให้เพิ่ม null?
ผมสงสัยว่าทำไมช่วยให้การเพิ่มjava.util.ArrayList nullมีกรณีใดที่ฉันต้องการที่จะเพิ่มnullไปยังArrayList? ฉันถามคำถามนี้เพราะในโครงการเรามีข้อผิดพลาดที่มีการเพิ่มรหัสบางส่วนnullลงไปArrayListและมันก็ยากที่จะทราบว่าจุดบกพร่องนั้นอยู่ที่ไหน เห็นได้ชัดว่าNullPointerExceptionถูกโยน แต่ไม่จนกว่ารหัสอื่นพยายามเข้าถึงองค์ประกอบ ปัญหาคือวิธีการค้นหารหัสที่เพิ่มnullวัตถุ มันจะง่ายกว่านี้หากArrayListมีข้อยกเว้นในรหัสที่มีการเพิ่มองค์ประกอบ

4
ประสิทธิภาพของ Scala เทียบกับ Java
ก่อนอื่นฉันต้องการทำให้ชัดเจนว่านี่ไม่ใช่คำถามภาษา -X- กับภาษา -Y เพื่อตรวจสอบที่ดีกว่า ฉันใช้ Java มานานแล้วและตั้งใจจะใช้มันต่อไป ขนานไปกับสิ่งนี้ฉันกำลังเรียน Scala ด้วยความสนใจอย่างยิ่งนอกเหนือจากสิ่งเล็ก ๆ น้อย ๆ ที่ทำให้ฉันคุ้นเคยกับความประทับใจของฉันก็คือฉันสามารถทำงานได้ดีมากในภาษานี้ คำถามของฉันคือซอฟต์แวร์ที่เขียนใน Scala เปรียบเทียบกับซอฟต์แวร์ที่เขียนใน Java ในแง่ของความเร็วในการดำเนินการและการใช้หน่วยความจำได้อย่างไร แน่นอนว่านี่เป็นคำถามที่ตอบยากโดยทั่วไป แต่ฉันคาดหวังว่าการสร้างระดับที่สูงขึ้นเช่นการจับคู่รูปแบบฟังก์ชันการเรียงลำดับที่สูงขึ้น ฯลฯ แนะนำค่าใช้จ่ายบางอย่าง อย่างไรก็ตามประสบการณ์ปัจจุบันของฉันใน Scala จำกัด เพียงตัวอย่างเล็ก ๆ ภายใต้รหัส 50 บรรทัดและฉันยังไม่ได้ใช้การวัดประสิทธิภาพใด ๆ จนถึงตอนนี้ ดังนั้นฉันไม่มีข้อมูลจริง ถ้าปรากฎว่า Scala มีค่าใช้จ่ายในการเขียน Java ค่อนข้างสมเหตุสมผลหรือไม่ที่จะรวมโครงการ Scala / Java เข้าด้วยกันโดยที่หนึ่งรหัสในส่วนที่ซับซ้อนมากขึ้นใน Scala และส่วนที่มีความสำคัญต่อประสิทธิภาพใน Java นี่เป็นเรื่องธรรมดาไหม แก้ไข 1 …


5
แลมบ์ดาแสดงออกถึงสิ่งที่มากกว่าคลาสภายในที่ไม่ระบุชื่อด้วยวิธีการเดียวหรือไม่?
มี hype ใหม่พร้อมกับการแสดงออกแลมบ์ดาที่รอคอยมานานใน Java 8; ทุกๆ 3 วันบทความอื่นจะปรากฏพร้อมกับพวกเขาเกี่ยวกับวิธีเจ๋ง ๆ เท่าที่ฉันเข้าใจแลมบ์ดานิพจน์แล้วมันไม่มีอะไรมากไปกว่าคลาสภายในที่ไม่ระบุชื่อด้วยวิธีการเดียว (อย่างน้อยก็ในระดับรหัสไบต์) นอกจากนี้มันยังมาพร้อมกับฟีเจอร์ที่ดีอีกอย่าง - การอนุมานแบบ แต่ฉันเชื่อว่าสิ่งนี้เทียบเท่าได้กับยาชื่อสามัญในบางระดับ เมื่อรู้อย่างนี้แล้วการแสดงออกของแลมบ์ดาจะนำสิ่งที่มากกว่าแค่การสร้างประโยคในภาษาจาวา ฉันสามารถสร้างคลาสที่ทรงพลังและยืดหยุ่นมากขึ้นหรือโครงสร้างเชิงวัตถุอื่น ๆ ด้วยการแสดงออกแลมบ์ดาที่ไม่สามารถสร้างขึ้นด้วยคุณสมบัติภาษาปัจจุบันได้หรือไม่

8
ภาษา OO สมัยใหม่สามารถแข่งขันกับประสิทธิภาพการจัดเก็บอาร์เรย์ของ C ++ ได้หรือไม่
ฉันเพิ่งสังเกตเห็นว่าภาษาการเขียนโปรแกรม OO สมัยใหม่ทุกอย่างที่ฉันคุ้นเคยอย่างน้อยก็มี (ซึ่งโดยพื้นฐานแล้วก็คือ Java, C # และ D) ช่วยให้อาร์เรย์ covariant นั่นคืออาร์เรย์สตริงเป็นอาร์เรย์วัตถุ: Object[] arr = new String[2]; // Java, C# and D allow this อาร์เรย์ของ Covariant เป็นรูในระบบแบบสแตติก พวกเขาทำให้เกิดข้อผิดพลาดประเภทที่เป็นไปได้ที่ไม่สามารถตรวจพบได้ในเวลารวบรวมดังนั้นทุกการเขียนไปยังอาเรย์ต้องถูกตรวจสอบที่รันไทม์: arr[0] = "hello"; // ok arr[1] = new Object(); // ArrayStoreException ดูเหมือนว่าจะมีประสิทธิภาพที่แย่มากถ้าฉันทำร้านค้ามากมาย C ++ ไม่มีอาร์เรย์ที่แปรปรวนร่วมดังนั้นจึงไม่จำเป็นต้องทำการตรวจสอบรันไทม์อีกต่อไปซึ่งหมายความว่าไม่มีการลงโทษประสิทธิภาพ มีการวิเคราะห์เพื่อลดจำนวนการตรวจสอบรันไทม์ที่จำเป็นหรือไม่? ตัวอย่างเช่นถ้าฉันพูดว่า: arr[1] = arr[0]; ใครจะยืนยันว่าร้านค้าไม่อาจล้มเหลว ฉันแน่ใจว่ามีการเพิ่มประสิทธิภาพที่เป็นไปได้อื่น …
40 c#  java  c++  d 

9
ทำไมฉันควรประกาศคลาสเป็นคลาสนามธรรม?
ฉันรู้ไวยากรณ์กฎที่ใช้กับคลาสนามธรรมและฉันต้องการทราบการใช้คลาสนามธรรม คลาสนามธรรมไม่สามารถสร้างอินสแตนซ์ได้โดยตรง แต่สามารถขยายได้ด้วยคลาสอื่น ข้อดีของการทำเช่นนั้นคืออะไร? มันแตกต่างจากส่วนต่อประสานอย่างไร ฉันรู้ว่าคลาสหนึ่งสามารถใช้หลายอินเตอร์เฟส แต่สามารถขยายคลาสนามธรรมได้เพียงคลาสเดียวเท่านั้น นั่นเป็นข้อแตกต่างระหว่างอินเตอร์เฟสและคลาสนามธรรมหรือไม่? ฉันรู้เกี่ยวกับการใช้งานส่วนต่อประสาน ฉันได้เรียนรู้ว่าจากรูปแบบการมอบหมายกิจกรรมของ AWT ใน Java ในสถานการณ์ใดที่ฉันควรประกาศคลาสเป็นคลาสนามธรรม? ประโยชน์ของสิ่งนั้นคืออะไร?

6
ทำไมหลีกเลี่ยงการสืบทอด Java "ขยาย"
Jame Gosling กล่าว “ คุณควรหลีกเลี่ยงการสืบทอดการปฏิบัติเมื่อทำได้” และใช้การสืบทอดส่วนต่อประสานแทน แต่ทำไม เราจะหลีกเลี่ยงการสืบทอดโครงสร้างของวัตถุโดยใช้คำสำคัญ "ขยาย" และในเวลาเดียวกันทำให้รหัสของเราเป็นวัตถุเชิง? ใครช่วยกรุณายกตัวอย่าง Object Oriented ที่แสดงแนวคิดนี้ในสถานการณ์เช่น "สั่งซื้อหนังสือในร้านหนังสือ"

7
มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่จะมีส่วนต่อประสานเพื่อกำหนดค่าคงที่หรือไม่?
ฉันกำลังเขียนคลาสชุดทดสอบ Junit ใน Java มีค่าคงที่หลายค่าเช่นสตริงที่ฉันต้องการในคลาสทดสอบที่แตกต่างกัน ฉันกำลังคิดเกี่ยวกับอินเทอร์เฟซที่กำหนดพวกเขาและทุกชั้นทดสอบจะใช้มัน ประโยชน์ที่ฉันเห็นมี: เข้าถึงค่าคงที่ได้ง่าย: MY_CONSTANTแทนThatClass.MY_CONSTANT แต่ละค่าคงที่กำหนดเพียงครั้งเดียว วิธีนี้ค่อนข้างดีหรือไม่ดี? ฉันรู้สึกว่าใช้แนวคิดของอินเตอร์เฟสแบบไม่เหมาะสม คุณสามารถตอบโดยทั่วไปเกี่ยวกับอินเทอร์เฟซ / ค่าคงที่ แต่ยังเกี่ยวกับการทดสอบหน่วยหากมีบางสิ่งที่พิเศษเกี่ยวกับมัน

3
เหตุใดฉันจึงควรใช้“ การทำงานตามหน้าที่” แทนการวนซ้ำ
for (Canvas canvas : list) { } NetBeans แนะนำให้ฉันใช้ "การทำงานตามหน้าที่": list.stream().forEach((canvas) -> { }); แต่นี่คือเหตุผลที่แนะนำ ? ถ้ามีอะไรมันยากที่จะอ่านและเข้าใจ คุณโทรstream()แล้วใช้การแสดงออกแลมบ์ดากับพารามิเตอร์forEach() canvasฉันไม่เห็นว่าเป็นอย่างไรดีกว่าforลูปในตัวอย่างแรก เห็นได้ชัดว่าฉันกำลังพูดถึงสุนทรียภาพเท่านั้น อาจมีข้อได้เปรียบทางเทคนิคที่นี่ที่ฉันหายไป มันคืออะไร? เหตุใดฉันจึงควรใช้วิธีที่สองแทน

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