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

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

3
ฟังก์ชันตัวตรวจสอบค่าของฉันต้องส่งคืนทั้งบูลีนและข้อความ
ฉันมีฟังก์ชั่นตรวจสอบค่าบางอย่างคล้ายกับฟังก์ชั่นตรวจสอบหมายเลขบัตรเครดิตที่ส่งผ่านมาในสตริงและต้องตรวจสอบว่าค่าเป็นรูปแบบที่ถูกต้อง หากเป็นรูปแบบที่ถูกต้องจะต้องส่งคืนจริง หากไม่ใช่รูปแบบที่ถูกต้องจะต้องส่งคืนค่าเท็จและแจ้งให้เราทราบว่ามีอะไรผิดปกติกับมูลค่า คำถามคือวิธีที่ดีที่สุดในการบรรลุเป้าหมายนี้คืออะไร นี่คือวิธีแก้ปัญหาบางประการ: 1. ใช้รหัสส่งคืนจำนวนเต็ม / enum เพื่อแสดงความหมาย: String[] returnCodeLookup = [ "Value contains wrong number of characters, should contain 10 characters", "Value should end with 1", "Value should be a multiple of 3" ] private int valueChecker(String value) { /*check value*/ return returnCode; } rc = checkValue(valueToBeChecked); …

3
เมื่อฉันสร้างวัตถุจะมีการจัดสรรหน่วยความจำใหม่ให้กับทั้งเขตข้อมูลอินสแตนซ์และวิธีการหรือเฉพาะกับเขตข้อมูลอินสแตนซ์
ฉันมีคลาสต่อไปนี้ class Student{ int rollNumber; int marks; public void setResult(int rollNumber, int marks){ this.rollNumber=rollNumber; this.marks=marks; } public void displayResult(){ System.out.println("Roll Number= "+this.rollNumber+" Marks= "+this.marks); } } ตอนนี้ฉันสร้างวัตถุสองประเภทที่เป็นนักเรียนดังนี้ Student s1=new Student(); Student s2=new Student(); ตอนนี้มีการจัดสรรหน่วยความจำสองชุดที่แตกต่างกันสำหรับฟิลด์อินสแตนซ์ ตอนนี้คำถามของฉันคือการจัดสรรหน่วยความจำสำหรับวิธีการ ( setResultและdisplayResult) สองครั้งหรือหนึ่งครั้ง? โปรดดูรูปต่อไปนี้และคุณสามารถช่วยฉันบอกว่ารูปใดให้ข้อมูลที่ถูกต้อง

2
เหตุใด C # จึงมีคุณสมบัติมากกว่า Java [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา โปรดทราบว่านี่ไม่ได้หมายถึงอาร์กิวเมนต์ของ Java vs. C # ฉันเป็นโปรแกรมเมอร์ Java ที่ไม่มีประสบการณ์แบบ C # ขอเพียงแค่ความอยากรู้อยากเห็น ฉันได้อ่านบน C # และดูเหมือนว่ามันมีคุณสมบัติมากกว่า Java ตัวอย่างจำนวนมาก: การอนุมานประเภท dynamic คำสำคัญ. ผู้ได้รับมอบหมาย พารามิเตอร์ทางเลือก แลมบ์ดาและ LINQ (ฉันไม่รู้จริงๆว่ามันคืออะไร) คุณสมบัติ. อย่างไรก็ตาม Java ไม่ได้มีคุณสมบัติอะไรที่ C # ไม่มี คำถามของฉันคือ: ทำไม C # ถึงมีฟีเจอร์เนทีฟมากกว่า Java? และทำไม Java ไม่ได้เพิ่มสิ่งเหล่านี้ตลอดทั้งปีเช่นคุณสมบัติหรือการอนุมานประเภท? นักออกแบบภาษาจาวาใช้แนวทางที่เรียบง่ายกว่านี้หรือไม่? อะไรคือสาเหตุของสิ่งนี้?
14 java  c#  languages 

6
ทางเลือกในการลองจับซ้อนสำหรับทางเลือก
ฉันมีสถานการณ์ที่ฉันพยายามดึงวัตถุ หากการค้นหาล้มเหลวฉันมีข้อผิดพลาดหลายประการซึ่งแต่ละข้ออาจล้มเหลว ดังนั้นรหัสดูเหมือนว่า: try { return repository.getElement(x); } catch (NotFoundException e) { try { return repository.getSimilarElement(x); } catch (NotFoundException e1) { try { return repository.getParentElement(x); } catch (NotFoundException e2) { //can't recover throw new IllegalArgumentException(e); } } } มันดูน่าเกลียดมาก ๆ ฉันเกลียดที่จะคืนค่าว่าง แต่ในสถานการณ์นี้ดีกว่าไหม Element e = return repository.getElement(x); if (e == …

5
ราคาแพงในที่สุดก็ลอง
ในกรณีของรหัสที่คุณต้องทำการล้างทรัพยากรก่อนออกจากฟังก์ชันมีความแตกต่างที่สำคัญระหว่าง 2 วิธีในการทำมัน การทำความสะอาดทรัพยากรก่อนทุกคำสั่งส่งคืน void func() { login(); bool ret = dosomething(); if(ret == false) { logout(); return; } ret = dosomethingelse(); if(ret == false) { logout(); return; } dootherstuff(); logout(); } การทำความสะอาดทรัพยากรในบล็อกสุดท้าย void func() { login(); try { bool ret = dosomething(); if(ret == false) return; ret = dosomethingelse(); …

7
ใน Java ทำไมสมาชิกที่ได้รับความคุ้มครองทำให้เข้าถึงคลาสของแพ็คเกจเดียวกันได้
จากเอกสารอย่างเป็นทางการ... แพ็คเกจ Class Class ย่อย YYYY สาธารณะ ป้องกัน YYYN ไม่มีตัวแก้ไข YYNN YNNN ส่วนตัว สิ่งนี้คือฉันจำไม่ได้ว่ามีกรณีการใช้งานที่ฉันต้องการเข้าถึงสมาชิกที่ได้รับความคุ้มครองจากชั้นเรียนภายในแพ็คเกจเดียวกัน อะไรคือสาเหตุของการนำไปใช้นี้? แก้ไข:เพื่อชี้แจงฉันกำลังมองหากรณีการใช้งานเฉพาะที่ทั้งคลาสย่อยและคลาสภายในแพ็คเกจเดียวกันจำเป็นต้องเข้าถึงเขตข้อมูลหรือวิธีการป้องกัน package some.package; public class A { protected void protectedMethod(){ // do something } } package another.package; public class B extends A{ public void someMethod(){ // accessible because B is a subclass of A protectedMethod(); …

1
สรุปความแตกต่างระหว่างเวอร์ชัน Java? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ปิดให้บริการใน2 ปีที่ผ่านมา คำตอบของคำถามนี้เป็นความพยายามของชุมชน แก้ไขคำตอบที่มีอยู่เพื่อปรับปรุงโพสต์นี้ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ อะไรคือความแตกต่างที่สำคัญระหว่างเวอร์ชัน Java ในแง่ของการพัฒนาซอฟต์แวร์? เราจะหาบทสรุปของการเปลี่ยนแปลงที่สำคัญที่สุดที่เกี่ยวข้องกับการเขียนโปรแกรมได้ที่ไหน? บันทึกประจำรุ่นเช่นhttp://www.oracle.com/technetwork/java/javase/releasenotes-136954.htmlอาจอ่านยาก ตัวอย่างเช่นมีโครงสร้างโค้ดใหม่ "สำหรับแต่ละ" ใน Java 1.5
14 java  versioning 

3
การแยกวิเคราะห์ไฟล์ทั่วไปใน Java โดยใช้รูปแบบกลยุทธ์
ฉันกำลังทำงานกับผลิตภัณฑ์ที่ความรับผิดชอบของหนึ่งในโมดูลคือการแยกวิเคราะห์ไฟล์ XML และถ่ายโอนเนื้อหาที่ต้องการในฐานข้อมูล แม้ว่าความต้องการในปัจจุบันจะเป็นเพียงการแยกวิเคราะห์ไฟล์ XML แต่ฉันต้องการออกแบบโมดูลการแยกวิเคราะห์ในแบบที่ฉันสามารถรองรับไฟล์ประเภทใดก็ได้ในอนาคต เหตุผลสำหรับวิธีนี้คือเรากำลังสร้างผลิตภัณฑ์นี้สำหรับลูกค้าเฉพาะ แต่วางแผนที่จะขายให้กับลูกค้ารายอื่นในอนาคตอันใกล้ ระบบทั้งหมดในระบบนิเวศสำหรับลูกค้าปัจจุบันผลิตและใช้ไฟล์ XML แต่นี่อาจไม่เป็นกรณีสำหรับลูกค้ารายอื่น ฉันพยายามทำอะไรจนถึงตอนนี้? (ปัจจุบัน) ฉันมีการออกแบบต่อไปนี้ในใจซึ่งขึ้นอยู่กับรูปแบบกลยุทธ์ ฉันได้เขียนรหัสลงในคราสอย่างรวดเร็วเพื่อถ่ายทอดการออกแบบของฉันดังนั้นมันจะดีมากหากแง่มุมอื่น ๆ เช่นวิธีการที่เหมาะสมในการจัดการข้อยกเว้นถูกละเว้นในตอนนี้ Parser:อินเตอร์เฟสกลยุทธ์ที่แสดงเมธอดการวิเคราะห์ public interface Parser<T> { public T parse(String inputFile); } * เหตุผลในการใช้พารามิเตอร์ทั่วไปคืออนุญาตประเภทการส่งคืนใด ๆ รวมถึงความปลอดภัยของประเภทในเวลารวบรวม ProductDataXmlParserคลาสที่เป็นรูปธรรมสำหรับการวิเคราะห์ไฟล์ product.xml ที่มีข้อมูลที่เกี่ยวข้องกับผลิตภัณฑ์ (ใช้ XMLBeans) public class ProductDataXmlParser implements Parser<ProductDataTYPE> { public ProductDataTYPE parse(String inputFile) { ProductDataTYPE productDataDoc = …
14 java  design  parsing  xml 

1
ข้อควรพิจารณาเกี่ยวกับเวอร์ชัน Java ที่จะใช้ในการผลิต
บางคนใช้เทคโนโลยีที่ทันสมัย ​​- อัพเดทวันที่มีการอัพเดท ในการผลิตสิ่งนี้ไม่เหมาะสม การวิจัยเกี่ยวกับว่าเวอร์ชั่นปัจจุบัน (Java 7) พร้อมสำหรับการผลิตจะสร้างเนื้อหาเก่าจำนวนมากซึ่งอาจไม่ถูกต้องอีกต่อไป (ในขณะที่เขียน Java 7 นี้ออกมานานหนึ่งปีครึ่งซึ่งดูเหมือนนานมาก) . ฉันต้องพิจารณาอะไรบ้างเพื่อพิจารณาว่าเหมาะสมที่จะอัพเกรดสภาวะแวดล้อมการใช้งานจริงเป็น Java เวอร์ชันใหม่กว่าหรือไม่?

2
เหตุใดการใช้ไลบรารี C ++ จึงมีความซับซ้อน
ก่อนอื่นฉันต้องการทราบว่าฉันรัก C ++ และฉันเป็นหนึ่งในคนเหล่านั้นที่คิดว่าการเขียนโค้ดใน C ++ ง่ายกว่า Java ยกเว้นสิ่งเล็ก ๆ น้อย ๆ อย่างหนึ่ง: ห้องสมุด ใน Java คุณสามารถเพิ่ม jar ลงใน build path และเสร็จแล้ว ใน C ++ คุณจะต้องตั้งค่าหลายพา ธ สำหรับไฟล์ส่วนหัวและไลบรารีเอง ในบางกรณีคุณต้องใช้แฟล็กบิลด์พิเศษ ฉันใช้ Visual Studio, Code Blocks เป็นหลักและไม่มี IDE เลย ตัวเลือกทั้ง 3 ไม่แตกต่างกันมากเมื่อพูดถึงการใช้ไลบรารีภายนอก ฉันสงสัยว่าทำไมไม่มีทางเลือกที่ง่ายกว่านี้? เช่นเดียวกับการมีไฟล์. zip แบบพิเศษที่มีทุกสิ่งที่คุณต้องการในที่เดียวเพื่อให้ IDE สามารถทำงานทั้งหมดให้คุณได้ มีอุปสรรคทางเทคนิคสำหรับสิ่งนี้หรือไม่?
14 java  c++  libraries 

3
ฉันควรใช้อินเตอร์เฟสโดยตรงหรือให้ซูเปอร์คลาสทำหรือไม่
มีความแตกต่างระหว่าง public class A extends AbstractB implements C {...} เมื่อเทียบกับ ... public class A extends AbstractB {...} abstract class AbstractB implements C {...} ฉันเข้าใจว่าในทั้งสองกรณีคลาส A จะจบลงที่สอดคล้องกับส่วนต่อประสาน ในกรณีที่สองสามารถให้การดำเนินงานสำหรับวิธีการในอินเตอร์เฟซAbstractB Cนั่นคือความแตกต่างเท่านั้น? ถ้าฉันไม่ต้องการที่จะให้การดำเนินการใด ๆ ของวิธีการอินเตอร์เฟซใน AbstractB , รูปแบบที่ฉันควรจะใช้ ? การใช้รายการใดรายการหนึ่งมีวัตถุประสงค์ 'เอกสาร' ที่ซ่อนอยู่หรือไม่

3
ข้อเสียของการนำ singleton ไปใช้กับ enum ของ Java คืออะไร
ตามเนื้อผ้ามักจะใช้เป็นซิงเกิล public class Foo1 { private static final Foo1 INSTANCE = new Foo1(); public static Foo1 getInstance(){ return INSTANCE; } private Foo1(){} public void doo(){ ... } } ด้วย enum ของ Java เราสามารถใช้ singleton เป็น public enum Foo2 { INSTANCE; public void doo(){ ... } } น่ากลัวเหมือนรุ่นที่ 2 คือมีข้อเสียหรือไม่ (ฉันให้ความคิดกับฉันและฉันจะตอบคำถามของฉันเองหวังว่าคุณจะได้คำตอบที่ดีกว่า)
14 java  singleton  enum 

5
วิธีในการรับรองอินสแตนซ์ที่ไม่เหมือนใครของชั้นเรียนหรือไม่?
ต้องการปรับปรุงโพสต์นี้หรือไม่? ให้คำตอบโดยละเอียดสำหรับคำถามนี้รวมถึงการอ้างอิงและคำอธิบายว่าทำไมคำตอบของคุณถึงถูกต้อง คำตอบที่ไม่มีรายละเอียดเพียงพออาจแก้ไขหรือลบออกได้ ฉันกำลังมองหาวิธีที่แตกต่างเพื่อให้แน่ใจว่าแต่ละอินสแตนซ์ของคลาสที่กำหนดนั้นเป็นอินสแตนซ์ที่ระบุตัวตนไม่ซ้ำกัน ตัวอย่างเช่นผมมีเรียนกับสนามName nameเมื่อฉันมีNameวัตถุที่nameเริ่มต้นให้กับ John Smith ฉันไม่ต้องการที่จะสามารถสร้างอินสแตนซ์ของNameวัตถุที่แตกต่างด้วยชื่อเป็น John Smith หรือถ้าการสร้างอินสแตนซ์เกิดขึ้นฉันต้องการให้มีการอ้างอิงไปยังวัตถุเดิม กว่าวัตถุใหม่ ฉันทราบว่าวิธีหนึ่งในการทำเช่นนี้คือการมีโรงงานแบบคงที่ที่มีMapวัตถุชื่อปัจจุบันทั้งหมดและโรงงานตรวจสอบว่าวัตถุที่มี John Smith เป็นชื่อที่ไม่มีอยู่ก่อนส่งกลับการอ้างอิงไปยังNameวัตถุ. วิธีที่ฉันสามารถคิดออกด้านบนของหัวของฉันก็คือการมีแผนที่แบบคงที่ในNameระดับและเมื่อสร้างเรียกว่าการขว้างปายกเว้นถ้าค่าที่ส่งไปในnameที่มีอยู่แล้วในการใช้งานในวัตถุอื่น แต่ผมทราบข้อยกเว้นการขว้างปา ในตัวสร้างโดยทั่วไปความคิดที่ดี มีวิธีอื่นในการบรรลุเป้าหมายนี้หรือไม่?

9
วิธีการแยกคลาสที่มีขนาดใหญ่และแน่นเข้าด้วยกันได้อย่างไร
ฉันมีชั้นเรียนขนาดใหญ่ที่มีโค้ดมากกว่า 2K บรรทัด (และเพิ่มขึ้นเรื่อย ๆ ) ที่ฉันอยากจะสร้างใหม่หากเป็นไปได้เพื่อให้มีการออกแบบที่เบาและสะอาดมากขึ้น เหตุผลที่มันใหญ่มากส่วนใหญ่เป็นเพราะคลาสเหล่านี้จัดการกับชุดของแผนที่ที่วิธีการส่วนใหญ่จำเป็นต้องเข้าถึงและวิธีการเชื่อมต่อกันมาก ฉันจะยกตัวอย่างชัดเจน: ฉันมีคลาสที่เรียกServerว่าจัดการข้อความขาเข้า มันมีวิธีการเช่นjoinChatroom, searchUsers, sendPrivateMessageและอื่น ๆ ทั้งหมดของวิธีการเหล่านี้จัดการแผนที่เช่นusers, chatrooms, servers... บางทีมันอาจจะดีถ้าฉันมีข้อความการจัดการเรียนที่เกี่ยวข้องกับห้องสนทนาการจัดการกับผู้ใช้อื่น ๆ แต่ปัญหาหลักที่นี่คือฉันต้องใช้แผนที่ทั้งหมดในวิธีการส่วนใหญ่ นั่นเป็นเหตุผลที่ตอนนี้พวกเขาทั้งหมดติดอยู่ในServerชั้นเรียนเพราะพวกเขาทั้งหมดพึ่งพาแผนที่ทั่วไปเหล่านี้และวิธีการเชื่อมต่อซึ่งกันและกัน ฉันจะต้องสร้างห้องเรียนแชท แต่มีการอ้างอิงถึงวัตถุอื่น ๆ ผู้ใช้คลาสอีกครั้งโดยอ้างอิงถึงวัตถุอื่นทั้งหมดเป็นต้น ฉันรู้สึกว่าฉันจะทำอะไรผิด

5
พฤติกรรมที่ไม่ได้กำหนดใน Java
ฉันอ่านคำถามนี้เกี่ยวกับ SOที่กล่าวถึงพฤติกรรมที่ไม่ได้กำหนดทั่วไปใน C ++ และฉันสงสัยว่า: Java มีพฤติกรรมที่ไม่ได้กำหนดหรือไม่ หากเป็นเช่นนั้นแล้วสาเหตุทั่วไปของพฤติกรรมที่ไม่ได้กำหนดใน Java คืออะไร ถ้าไม่เช่นนั้นคุณสมบัติใดของ Java ที่ทำให้ปราศจากพฤติกรรมดังกล่าวและเพราะเหตุใด C และ C ++ รุ่นล่าสุดจึงไม่ถูกนำไปใช้กับคุณสมบัติเหล่านี้

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