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

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

10
การเขียนโปรแกรม“ เหมาะสม” เมื่อไรจะไม่สำคัญอีกต่อไป?
ฉันกำลังสร้างเกม Android ในเวลาว่าง มันใช้ไลบรารีlibgdxดังนั้นการยกของหนักก็ทำได้สำหรับฉัน ขณะที่กำลังพัฒนาฉันเลือกประเภทข้อมูลบางขั้นตอนอย่างไม่ระมัดระวัง ฉันใช้ hashtable เพราะฉันต้องการบางสิ่งบางอย่างใกล้เคียงกับอาเรย์ ค่าคีย์ที่มนุษย์อ่านได้ ในที่อื่น ๆ เพื่อให้ได้สิ่งที่คล้ายกันฉันใช้เวกเตอร์ ฉันรู้ว่า libgdx มีคลาส vector2 และ vector3 แต่ฉันไม่เคยใช้เลย เมื่อฉันเจอปัญหาแปลก ๆ และค้นหา Stack Overflow เพื่อขอความช่วยเหลือฉันเห็นผู้คนจำนวนมากเพิ่งตั้งคำถามใหม่ที่ใช้ประเภทข้อมูลบางประเภทเมื่ออีกคนหนึ่งมีเทคนิค "เหมาะสม" เช่นเดียวกับการใช้ ArrayList เพราะมันไม่ต้องการขอบเขตที่กำหนดเมื่อเทียบกับการกำหนด int [] ใหม่ด้วยขอบเขตที่รู้จักกันใหม่ หรือแม้แต่เรื่องเล็กน้อยเช่นนี้ for(int i = 0; i < items.length; i ++) { // do something } ฉันรู้ว่ามันประเมินรายการความยาวของการวนซ้ำทุกครั้ง อย่างไรก็ตามฉันก็รู้ว่าสิ่งของจะไม่เกิน 15 …

7
เกิดอะไรขึ้นกับข้อมูลทั่วไปของ Java? [ปิด]
ฉันเคยเห็นหลายครั้งในเว็บไซต์นี้โพสต์ที่ประณามการใช้งานจาวาทั่วไป ตอนนี้ฉันสามารถพูดได้อย่างตรงไปตรงมาว่าฉันไม่ได้มีปัญหาใด ๆ กับการใช้พวกเขา อย่างไรก็ตามฉันไม่ได้พยายามที่จะสร้างชั้นเรียนตัวเอง ดังนั้นปัญหาของคุณกับการสนับสนุนทั่วไปของ Java คืออะไร
49 java  generics 

8
เราสามารถใช้ Java เพื่อการใช้งานเชิงพาณิชย์ได้หรือไม่?
Java คือใบอนุญาต GPL (อ้างอิงจากวิกิพีเดีย) ฉันไม่แน่ใจว่าสามารถใช้ในโครงการเชิงพาณิชย์ได้ ฉันมีเว็บไซต์ที่เขียนด้วยภาษาจาวาอยู่แล้วและฉันวางแผนที่จะใช้เพื่อการค้า มันผิดกฎหมายหรือเปล่า?
49 java  licensing  bcl 

6
อะไรคือข้อเสียของการกำหนดคลาสเป็นคลาสย่อยของรายการของตัวเอง?
ในโครงการล่าสุดของฉันฉันกำหนดคลาสด้วยส่วนหัวต่อไปนี้: public class Node extends ArrayList<Node> { ... } อย่างไรก็ตามหลังจากพูดคุยกับอาจารย์ประจำ CS ของฉันเขากล่าวว่าในชั้นเรียนจะ "น่ากลัวสำหรับความทรงจำ" และ "การปฏิบัติที่ไม่ดี" ฉันไม่ได้พบคนแรกที่เป็นจริงโดยเฉพาะและที่สองที่จะเป็นอัตนัย เหตุผลของฉันสำหรับการใช้งานนี้คือฉันมีความคิดสำหรับวัตถุที่จำเป็นต้องกำหนดเป็นสิ่งที่อาจมีความลึกตามอำเภอใจซึ่งพฤติกรรมของอินสแตนซ์สามารถกำหนดได้ทั้งโดยการใช้งานที่กำหนดเองหรือพฤติกรรมของวัตถุหลายอย่างเช่น . สิ่งนี้จะช่วยให้การนามธรรมของวัตถุที่มีการใช้งานทางกายภาพจะประกอบด้วยองค์ประกอบย่อยหลายโต้ตอบ ในทางกลับกันฉันเห็นว่านี่อาจเป็นการปฏิบัติที่ไม่ดี แนวคิดของการกำหนดสิ่งที่เป็นรายการของตัวเองนั้นไม่ง่ายหรือสามารถนำไปใช้งานได้จริง มีเหตุผลที่ถูกต้องหรือไม่ทำไมฉันไม่ควรใช้รหัสนี้ในการพิจารณาการใช้งานของฉัน ¹หากฉันจำเป็นต้องอธิบายเรื่องนี้เพิ่มเติมฉันยินดีที่จะ; ฉันแค่พยายามทำให้คำถามนี้สั้นกระชับ

3
วิธีใดเป็นวิธีปฏิบัติที่ดีกว่าสำหรับตัวอย่างหรือแบบสถิต?
คำถามนี้เป็นเรื่องส่วนตัว แต่ฉันแค่อยากรู้ว่าโปรแกรมเมอร์ส่วนใหญ่เข้าหานี้อย่างไร ตัวอย่างด้านล่างเป็นแบบหลอก -C # แต่ควรใช้กับ Java, C ++ และภาษา OOP อื่น ๆ ด้วย อย่างไรก็ตามเมื่อเขียนวิธีการช่วยเหลือในชั้นเรียนของฉันฉันมักจะประกาศให้พวกเขาเป็นแบบคงที่และเพียงผ่านเขตข้อมูลหากวิธีการช่วยเหลือที่พวกเขาต้องการ ตัวอย่างเช่นกำหนดรหัสข้างล่างนี้ผมชอบที่จะใช้วิธีการโทร # 2 class Foo { Bar _bar; public void DoSomethingWithBar() { // Method Call #1. DoSomethingWithBarImpl(); // Method Call #2. DoSomethingWithBarImpl(_bar); } private void DoSomethingWithBarImpl() { _bar.DoSomething(); } private static void DoSomethingWithBarImpl(Bar bar) { …

4
ทำไมวิธีการไม่ควรโยนข้อยกเว้นที่ตรวจสอบหลายประเภท
เราใช้ SonarQube เพื่อวิเคราะห์โค้ด Java ของเราและมีกฎนี้ (ตั้งค่าเป็นวิกฤติ): วิธีการสาธารณะควรมีข้อยกเว้นที่ตรวจสอบได้มากที่สุดหนึ่งรายการ การใช้ข้อยกเว้นที่เลือกไว้จะบังคับให้ผู้เรียกใช้วิธีจัดการกับข้อผิดพลาดไม่ว่าจะโดยการเผยแพร่พวกเขาหรือโดยการจัดการพวกเขา สิ่งนี้ทำให้ข้อยกเว้นเหล่านั้นเป็นส่วนหนึ่งของ API ของวิธีการทั้งหมด เพื่อรักษาความซับซ้อนสำหรับผู้โทรที่เหมาะสมวิธีการไม่ควรมีข้อยกเว้นที่ตรวจสอบมากกว่าหนึ่งประเภท " อีกเล็กน้อยใน Sonar มีสิ่งนี้ : วิธีการสาธารณะควรมีข้อยกเว้นที่ตรวจสอบได้มากที่สุดหนึ่งรายการ การใช้ข้อยกเว้นที่เลือกไว้จะบังคับให้ผู้เรียกใช้วิธีจัดการกับข้อผิดพลาดไม่ว่าจะโดยการแพร่กระจายพวกเขาหรือโดยการจัดการพวกเขา สิ่งนี้ทำให้ข้อยกเว้นเหล่านั้นเป็นส่วนหนึ่งของ API ของวิธีการทั้งหมด เพื่อรักษาความซับซ้อนสำหรับผู้โทรที่เหมาะสมวิธีการไม่ควรมีข้อยกเว้นที่ตรวจสอบมากกว่าหนึ่งประเภท รหัสต่อไปนี้: public void delete() throws IOException, SQLException { // Non-Compliant /* ... */ } ควรได้รับการปรับสภาพใหม่เป็น: public void delete() throws SomeApplicationLevelException { // Compliant /* ... */ } …

6
ควรตรวจสอบ `c> = '0'` หรือ` c> = 48` หรือไม่?
หลังจากการสนทนากับเพื่อนร่วมงานของฉันฉันได้รับคำถาม 'ปรัชญา' เกี่ยวกับวิธีจัดการกับชนิดข้อมูลถ่านใน Java ตามแนวทางปฏิบัติที่ดีที่สุด สมมติว่าสถานการณ์ง่าย ๆ(เห็นได้ชัดว่านี่เป็นเพียงตัวอย่างง่ายๆเพื่อให้ความหมายในการฝึกฝนสำหรับคำถามของฉัน)โดยที่ String 's' เป็นอินพุตคุณต้องนับจำนวนอักขระที่เป็นตัวเลขในนั้น นี่คือโซลูชันที่เป็นไปได้ 2 แบบ: 1) for(int i=0; i<s.length(); i++) { if(s.charAt(i) >= 48 && s.charAt(i) <= 57) { n++; } } 2) for(int i=0; i<s.length(); i++) { if(s.charAt(i) >= '0' && s.charAt(i) <= '9' ) { n++; } } ข้อใดที่สอง 'สะอาด' …

6
การปฏิบัติที่ดีหรือไม่ดีในการซ่อนคอลเลกชัน Java ด้วยชื่อคลาสที่มีความหมาย?
เมื่อเร็ว ๆ นี้ฉันเคยติดนิสัยคอลเลกชัน Java "กำบัง" ที่มีชื่อคลาสที่เป็นมิตรกับมนุษย์ ตัวอย่างง่ายๆ: // Facade class that makes code more readable and understandable. public class WidgetCache extends Map<String, Widget> { } หรือ: // If you saw a ArrayList<ArrayList<?>> being passed around in the code, would you // run away screaming, or would you actually understand what …

11
ฉันควรเลือก C # บน Java และ C ++ ด้วยเหตุผลใดบ้าง [ปิด]
C # ดูเหมือนว่าจะเป็นที่นิยมในวันนี้ ฉันได้ยินมาว่าวากยสัมพันธ์มันเกือบจะเหมือนกับจาวา Java และ C ++ มีอยู่เป็นเวลานาน ฉันควรเลือก C # บน Java และ C ++ ด้วยเหตุผลใดบ้าง

5
ในฐานะนักพัฒนา C # คุณจะเรียนรู้ Java เพื่อพัฒนาสำหรับ Android หรือใช้ MonoDroid แทนหรือไม่? [ปิด]
ฉันคิดว่าตัวเองค่อนข้างเชี่ยวชาญใน C # เป็นภาษาที่ฉันเลือกในขณะนี้และเป็นที่ซึ่งประสบการณ์การทำงานทั้งหมดของฉันตั้งอยู่ ถึงกระนั้นฉันก็ยังงงกับการมีอยู่ของโครงการMonoDroid ความเข้าใจของฉันได้เสมอว่า C # และ Java เป็นมากใกล้ เช่นถ้าคุณรู้จักคุณสามารถเรียนรู้ได้อย่างรวดเร็ว ดังนั้นเมื่อฉันพิจารณาการพัฒนาแอพ Android ครั้งแรกของฉันฉันแค่คิดว่าฉันจะทำความคุ้นเคยกับ Java มากพอที่จะเริ่มต้นแล้วเรียนรู้เมื่อฉันไป สิ่งนี้จะไม่สมเหตุสมผลกว่าการใช้ MonoDroid ซึ่งน่าจะมีคุณสมบัติน้อยกว่า Java Android SDK และต้องเรียนรู้ API ของตัวเอง (แม้ว่าจะเป็น. NET API) อยู่ดี ฉันแค่รู้สึกว่ามันจะเป็นการดีกว่าที่จะเรียนรู้ภาษาใหม่ (และเป็นที่นิยมอย่างมากในตอนนั้น) และได้รับประสบการณ์ในมัน - เมื่อใกล้กับสิ่งที่คุณรู้อยู่แล้ว - แทนที่จะยึดติดกับเทคโนโลยีที่คุณเคยสัมผัส ด้วยโดยไม่ได้รับทักษะที่มีค่าใด ๆ เพิ่มเติม บางทีฉันอาจบิดเบือนผู้ใช้ MonoDroid โดยเฉลี่ย อาจจะมากกว่าสำหรับผู้ที่มีประสบการณ์ใน Java และ. NET และเพียงต้องการ. NET หรืออาจ …
46 java  c#  .net  android  monodroid 

5
รูปแบบของตัวสร้าง: เมื่อใดจะล้มเหลว
เมื่อใช้รูปแบบของเครื่องมือสร้างฉันมักพบว่าตัวเองสับสนเมื่อต้องปล่อยให้สิ่งก่อสร้างล้มเหลวและฉันก็จัดการวางแผงที่แตกต่างกันในทุก ๆ วัน ก่อนอื่นให้อธิบาย: ด้วยความล้มเหลวในช่วงต้นผมหมายถึงว่าการสร้างวัตถุควรจะล้มเหลวทันทีเป็นพารามิเตอร์ที่ไม่ถูกต้องผ่านใน. SomeObjectBuilderดังนั้นภายใน ด้วยความล้มเหลวในช่วงปลายฉันหมายความว่าการสร้างวัตถุสามารถล้มเหลวในการbuild()โทรเท่านั้น จากนั้นข้อโต้แย้งบางอย่าง: ในความโปรดปรานของความล้มเหลวในช่วงปลาย: ระดับผู้สร้างไม่ควรเกินชั้นที่มีค่าเพียง นอกจากนี้ยังนำไปสู่การทำสำเนารหัสน้อยลง ในความโปรดปรานของความล้มเหลวในช่วงต้น: วิธีการทั่วไปในการเขียนโปรแกรมซอฟต์แวร์คือคุณต้องการตรวจสอบปัญหาให้เร็วที่สุดเท่าที่จะเป็นไปได้และดังนั้นสถานที่ที่มีเหตุผลที่สุดในการตรวจสอบจะอยู่ใน 'constructor,' setters ' ข้อสรุปทั่วไปเกี่ยวกับเรื่องนี้คืออะไร?

6
จำเป็นหรือไม่ที่จะต้องปฏิบัติตามแนวทางการเขียนโปรแกรมเชิงป้องกันสำหรับโค้ดที่จะไม่เปิดเผยต่อสาธารณะ
ฉันกำลังเขียนการนำเกมจาวามาใช้ในเกมไพ่ดังนั้นฉันจึงสร้างคอลเลกชันชนิดพิเศษที่ฉันเรียกว่าโซน วิธีการปรับเปลี่ยนทั้งหมดของคอลเลกชันของ Java ไม่ได้รับการสนับสนุน แต่มีวิธีการใน Zone API move(Zone, Card)ซึ่งย้ายการ์ดจากโซนที่กำหนดไปยังตัวมันเอง (สำเร็จโดยเทคนิคแพคเกจส่วนตัว) ด้วยวิธีนี้ฉันสามารถมั่นใจได้ว่าไม่มีไพ่ถูกนำออกจากโซนและหายตัวไป สามารถย้ายไปยังโซนอื่นได้เท่านั้น คำถามของฉันคือการเข้ารหัสป้องกันแบบนี้มีความจำเป็นมากแค่ไหน? มัน "ถูกต้อง" และรู้สึกเหมือนถูกวิธี แต่ไม่ใช่ว่า Zone API จะเป็นส่วนหนึ่งของห้องสมุดสาธารณะ มันเป็นเพียงสำหรับฉันดังนั้นมันเหมือนกับว่าฉันกำลังปกป้องรหัสของฉันจากตัวเองเมื่อฉันอาจจะมีประสิทธิภาพมากขึ้นโดยเพียงแค่ใช้คอลเลกชันมาตรฐาน ฉันควรใช้ความคิดโซนนี้ไกลแค่ไหน ใครบ้างที่สามารถให้คำแนะนำกับฉันเกี่ยวกับการรักษาสัญญาในชั้นเรียนที่ฉันเขียนโดยเฉพาะอย่างยิ่งสำหรับคนที่ไม่ได้เผยแพร่สู่สาธารณะ

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

5
เหตุใด Java จึงไม่พิมพ์ข้อสรุป
ฉันสงสัยอยู่เสมอว่าทำไม Java ไม่พิมพ์ข้อสรุปเนื่องจากภาษาเป็นสิ่งที่มันเป็นและ VM เป็นผู้ใหญ่มาก Google's Go เป็นตัวอย่างของภาษาที่มีการอนุมานประเภทที่ยอดเยี่ยมและลดจำนวนการพิมพ์ที่ต้องทำ มีเหตุผลพิเศษเบื้องหลังคุณสมบัตินี้หรือไม่ที่ไม่ได้เป็นส่วนหนึ่งของ Java?

3
สถาปัตยกรรมสะอาดของลุงบ๊อบ - คลาสเอนทิตี้ / โมเดลสำหรับแต่ละเลเยอร์
พื้นหลัง : ฉันกำลังพยายามใช้สถาปัตยกรรมที่สะอาดของลุงบ็อบในแอพ Android ของฉัน ฉันศึกษาโครงการโอเพนซอร์ซจำนวนมากที่พยายามแสดงวิธีการที่ถูกต้องและฉันพบว่ามีการนำไปใช้ที่น่าสนใจโดยใช้ RxAndroid สิ่งที่ฉันสังเกตเห็น: ในทุกเลเยอร์ (งานนำเสนอโดเมนและข้อมูล) มีคลาสโมเดลสำหรับเอนทิตีเดียวกัน (พูดถึง UML) นอกจากนี้ยังมีคลาส mapper ที่ดูแลการเปลี่ยนแปลงของวัตถุเมื่อใดก็ตามที่ข้อมูลข้ามเขตแดน (จากชั้นหนึ่งไปอีกชั้นหนึ่ง) คำถาม: มันจำเป็นต้องมีคลาสของโมเดลในทุกเลเยอร์หรือไม่เมื่อฉันรู้ว่าพวกมันทั้งหมดจะจบลงด้วยคุณลักษณะเดียวกันหากจำเป็นต้องใช้การดำเนินการ CRUD ทั้งหมดหรือไม่ หรือว่าเป็นกฎหรือแนวปฏิบัติที่ดีที่สุดเมื่อใช้สถาปัตยกรรมสะอาดหรือไม่

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