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

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

9
เหตุใดวิธีการคงที่จึงถือว่าเป็นวิธีการ
ฉันกำลังเขียนคำอธิบายรหัสสำหรับหลักสูตรและบังเอิญใช้คำmethodและfunctionสลับกันไปมา ฉันตัดสินใจที่จะกลับไปแก้ไขคำพูดนั้น แต่ก็พบกับช่องโหว่ในความเข้าใจของฉัน จากสิ่งที่ฉันเข้าใจรูทีนย่อยคือfunctionถ้ามันไม่ทำงานกับอินสแตนซ์ของคลาส (เอฟเฟกต์ถูก จำกัด ไว้ที่อินพุต / เอาท์พุตอย่างชัดเจน) และmethodถ้ามันทำงานบนอินสแตนซ์ของคลาส (มันอาจมี ออกผลข้างเคียงในกรณีที่ทำให้ไม่บริสุทธิ์) มีการอภิปรายที่ดีในหัวข้อนี้ โปรดทราบว่าตามคำจำกัดความของคำตอบที่ยอมรับแล้วสแตติกmethodควรเป็นฟังก์ชันเนื่องจากอินสแตนซ์จะไม่ถูกส่งผ่านโดยปริยายและไม่มีการเข้าถึงสมาชิกของอินสแตนซ์ใด ๆ ด้วยเหตุนี้จึงไม่ควรนิ่งmethodsเป็นฟังก์ชันใช่หรือไม่? ตามความหมายของพวกเขาพวกเขาไม่ได้ดำเนินการกับกรณีเฉพาะของคลาส พวกเขา "ผูก" กับชั้นเรียนเพราะความสัมพันธ์เท่านั้น ฉันเคยเห็นไซต์ที่ดูดีสองสามแห่งที่อ้างถึงรูทีนย่อยแบบคงที่เป็น "วิธีการ" แม้ว่า ( Oracle , Fredosaurus , ProgrammingSimplified ) ดังนั้นพวกเขาทั้งหมดมองข้ามคำศัพท์หรือฉันพลาดอะไรบางอย่าง (ฉันเดาว่าเป็นอย่างหลัง) . ฉันต้องการให้แน่ใจว่าฉันใช้ถ้อยคำที่ถูกต้อง ใครช่วยเคลียร์เรื่องนี้ได้ไหม

2
วิธีตั้งค่า IntelliJ IDEA Project SDK
ฉันเพิ่งติดตั้ง IntelliJ IDEA และเมื่อฉันพยายามสร้างโครงการแรกของฉันมันขอให้ฉันตั้งค่า Project SDK เมื่อฉันคลิกที่ "JDK" ระบบจะขอให้ฉันเลือกโฮมไดเร็กทอรีของ JDK ดังที่แสดงในภาพนี้ ฉันมีปัญหาในการค้นหาว่าอยู่ที่ไหน

6
เธรด Java Static initializers ปลอดภัยหรือไม่
ฉันใช้บล็อกรหัสคงที่เพื่อเริ่มต้นตัวควบคุมบางตัวในรีจิสทรีที่ฉันมี ดังนั้นคำถามของฉันคือฉันสามารถรับประกันได้หรือไม่ว่าบล็อกรหัสคงที่นี้จะถูกเรียกใช้เพียงครั้งเดียวเมื่อโหลดคลาสครั้งแรก ฉันเข้าใจว่าฉันไม่สามารถรับประกันได้ว่าจะเรียกบล็อกโค้ดนี้เมื่อใดฉันคาดเดาว่าเมื่อใดที่ Classloader โหลดครั้งแรก ฉันรู้ว่าฉันสามารถซิงโครไนซ์กับคลาสในบล็อกโค้ดแบบคงที่ได้ แต่ฉันเดาว่านี่คือสิ่งที่เกิดขึ้นจริงหรือ? ตัวอย่างโค้ดง่ายๆจะเป็น; class FooRegistry { static { //this code must only ever be called once addController(new FooControllerImpl()); } private static void addController(IFooController controller) { // ... } } หรือฉันควรทำเช่นนี้ class FooRegistry { static { synchronized(FooRegistry.class) { addController(new FooControllerImpl()); } } private static void addController(IFooController …

30
ข้อผิดพลาด Maven: ไม่พบหรือโหลดคลาสหลัก org.codehaus.plexus.classworlds.launcher.Launcher
ฉันได้ติดตั้งล่าสุดmaven-3.0.4บนWindows 7 : รายละเอียดการติดตั้งมีดังนี้: เส้นทางการติดตั้ง: C:\apache-maven-3.0.4 ตัวแปรสภาพแวดล้อม ได้แก่ M2_HOME C:\apache-maven-3.0.4\apache-maven\src JAVA_HOME C:\Program Files\Java\jdk-1.7.0_04 ตัวแปรเส้นทางที่เพิ่ม ได้แก่ : %M2_HOME%\bin;%JAVA_HOME%\bin; ในหน้าต่างคำสั่งจะแสดงดังนี้: C:\>java -version java version "1.7.0_04" Java(TM) SE Runtime Environment (build 1.7.0_04-b22) Java HotSpot(TM) Client VM (build 23.0-b21, mixed mode, sharing) C:\>mvn -version Error: Could not find or load main class org.codehaus.plexus.classworlds.launcher.Launcher นี่เป็นเวอร์ชันเดียวบน …
138 java  windows  maven 

6
ทางเลือก orElse ทางเลือกใน Java
ฉันได้ทำงานกับประเภทตัวเลือกใหม่ใน Java 8และฉันได้พบกับสิ่งที่ดูเหมือนเป็นการดำเนินการทั่วไปที่ไม่รองรับฟังก์ชัน: an "orElseOptional" พิจารณารูปแบบต่อไปนี้: Optional<Result> resultFromServiceA = serviceA(args); if (resultFromServiceA.isPresent) return result; else { Optional<Result> resultFromServiceB = serviceB(args); if (resultFromServiceB.isPresent) return resultFromServiceB; else return serviceC(args); } รูปแบบนี้มีหลายรูปแบบ แต่ต้องการให้ "orElse" เป็นทางเลือกที่ใช้ฟังก์ชันสร้างทางเลือกใหม่ซึ่งเรียกว่าเมื่อไม่มีรูปแบบปัจจุบันเท่านั้น การใช้งานจะมีลักษณะดังนี้: public Optional<T> orElse(Supplier<Optional<? extends T>> otherSupplier) { return value != null ? this : other.get(); } ฉันอยากรู้ว่ามีเหตุผลที่วิธีการดังกล่าวไม่มีอยู่จริงหรือไม่ถ้าฉันแค่ใช้ตัวเลือกเสริมโดยไม่ได้ตั้งใจและวิธีอื่น …
138 java  lambda  java-8  optional  java-9 

4
ชุดเธรดปลอดภัยประเภทต่างๆใน Java
ดูเหมือนว่าจะมีการใช้งานและวิธีการสร้างชุดเธรดที่ปลอดภัยใน Java ที่แตกต่างกันมากมาย ตัวอย่างบางส่วน ได้แก่ 1) CopyOnWriteArraySet 2) Collections.synchronizedSet (ชุดเซ็ต) 3) ConcurrentSkipListSet 4) Collections.newSetFromMap (ใหม่ ConcurrentHashMap ()) 5) ชุดอื่น ๆ ที่สร้างขึ้นในลักษณะคล้ายกับ (4) ตัวอย่างเหล่านี้มาจากรูปแบบพร้อมกัน: การใช้งานชุดพร้อมกันใน Java 6 ใครช่วยอธิบายความแตกต่างข้อดีข้อเสียของตัวอย่างเหล่านี้และอื่น ๆ ได้ไหม ฉันมีปัญหาในการทำความเข้าใจและรักษาทุกอย่างให้ตรงจาก Java Std Docs
138 java  concurrency  set 

7
วิธีการโอเวอร์โหลดสำหรับอาร์กิวเมนต์ว่าง
ฉันได้เพิ่มสามวิธีพร้อมพารามิเตอร์: public static void doSomething(Object obj) { System.out.println("Object called"); } public static void doSomething(char[] obj) { System.out.println("Array called"); } public static void doSomething(Integer obj) { System.out.println("Integer called"); } เมื่อผมโทรdoSomething(null)แล้วคอมไพเลอร์โยนข้อผิดพลาดเป็นวิธีการที่ไม่ชัดเจน ดังนั้นเป็นปัญหาเพราะIntegerและchar[]วิธีการหรือIntegerและObjectวิธีการ?
138 java  oop  null  overloading 

30
ปิดใช้งานการบันทึก HttpClient
ฉันใช้ commons-httpclient 3.1 ในชุดทดสอบการรวม การบันทึกเริ่มต้นสำหรับ HttpClient มีเสียงดังมากและดูเหมือนว่าฉันจะปิดไม่ได้ ฉันได้ลองทำตามคำแนะนำที่นี่แล้วแต่ก็ไม่มีข้อแตกต่างใด ๆ ส่วนใหญ่ฉันแค่ต้องทำให้ org.apache.http.wire logger ปิด ปัญหาส่วนหนึ่งคือฉันไม่รู้ว่า HttpClient กำลังพยายามใช้ตัวบันทึกประเภทใดและปัญหาส่วนใหญ่คือฉันไม่เคยใช้ไลบรารีนี้มาก่อน ฉันลองสร้างไฟล์ log4j.properties และวางลงในโฟลเดอร์ test / resources ของฉันแก้ไขไฟล์ master logging.properties ใน jre / lib และส่งอ็อพชันการบันทึกต่างๆไปยัง Maven ตามที่ระบุไว้ในเพจการบันทึกและไม่มีเลย สร้างความแตกต่าง ขอความช่วยเหลือใด ๆ ... นี่ทำให้ฉันรู้สึกแย่ UPDATE:การแก้ไข: ดูเหมือนว่าผลลัพธ์ที่เป็นปัญหานั้นมาจากการใช้งาน HttpClient ของ jwebunit ไม่ใช่ของฉันเอง ยังไงก็ไม่ถูกใจ อัปเดต:ขอบคุณสำหรับความพยายามที่ผ่านมา ฉันลองทุกอย่างที่แนะนำด้านล่างแล้ว แต่ยังไม่มีโชค ฉันมีไฟล์ commons-logging.properties ในโฟลเดอร์ …

8
ความสอดคล้องของ hashCode () บนสตริง Java
ค่า hashCode ของ Java String คำนวณเป็น ( String.hashCode () ): s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1] มีสถานการณ์ใดบ้าง (เช่นเวอร์ชัน JVM ผู้ขาย ฯลฯ ) ซึ่งนิพจน์ต่อไปนี้จะประเมินว่าเป็นเท็จหรือไม่ boolean expression = "This is a Java string".hashCode() == 586653468 อัปเดต # 1:หากคุณอ้างว่าคำตอบคือ "ใช่มีสถานการณ์ดังกล่าว" โปรดยกตัวอย่างที่เป็นรูปธรรมว่า "นี่คือสตริง Java" .hashCode ()! = 586653468 เมื่อใดพยายามระบุให้เจาะจง / เป็นรูปธรรม เป็นไปได้. อัปเดต …
138 java  string  hashcode 

15
วิธีรับค่าสูงสุดจาก Collection (ตัวอย่างเช่น ArrayList)
มี ArrayList ที่เก็บค่าจำนวนเต็ม ฉันต้องการค้นหาค่าสูงสุดในรายการนี้ เช่นสมมติว่า arrayList ค่าที่เก็บไว้คือ: และค่าสูงสุดจะเป็น10, 20, 30, 40, 5050 วิธีที่มีประสิทธิภาพในการหาค่าสูงสุดคืออะไร? @ แก้ไข:ฉันเพิ่งพบวิธีแก้ปัญหาหนึ่งที่ฉันไม่แน่ใจมาก ArrayList<Integer> arrayList = new ArrayList<Integer>(); arrayList.add(100); /* add(200), add(250) add(350) add(150) add(450)*/ Integer i = Collections.max(arrayList) และส่งคืนค่าสูงสุด อีกวิธีหนึ่งในการเปรียบเทียบค่าแต่ละค่าเช่น selection sort or binary sort algorithm
138 java 

15
วิธีอัปโหลดไฟล์และข้อมูล JSON ในบุรุษไปรษณีย์
ฉันใช้ Spring MVC และนี่คือวิธีของฉัน: /** * Upload single file using Spring Controller. */ @RequestMapping(value = "/uploadFile", method = RequestMethod.POST) public @ResponseBody ResponseEntity<GenericResponseVO<? extends IServiceVO>> uploadFileHandler( @RequestParam("name") String name, @RequestParam("file") MultipartFile file, HttpServletRequest request, HttpServletResponse response) { if (!file.isEmpty()) { try { byte[] bytes = file.getBytes(); // Creating the directory to …
138 java  json  spring-mvc  postman 

13
Encapsulation vs Abstraction?
นี่คือคำจำกัดความสั้น ๆ ของการห่อหุ้มและนามธรรม abstraction: กระบวนการของ abstraction ใน Java นั้นใช้เพื่อซ่อนรายละเอียดบางอย่างและแสดงเฉพาะคุณสมบัติที่สำคัญของวัตถุ กล่าวอีกนัยหนึ่งมันเกี่ยวข้องกับมุมมองภายนอกของวัตถุ (อินเทอร์เฟซ) ตัวอย่างที่ดีที่ฉันเห็นในเว็บไซต์นี้คือส่วนต่อประสาน encapsulation: โดยพื้นฐานแล้วเกี่ยวกับการซ่อนสถานะของวัตถุด้วยความช่วยเหลือของตัวดัดแปลงเช่นส่วนตัวสาธารณะการป้องกัน ฯลฯ เราเปิดเผยสถานะผ่านวิธีสาธารณะเฉพาะเมื่อจำเป็นเท่านั้น สิ่งที่เราประสบความสำเร็จกับการปรับเปลี่ยนเช่นprivate,publicยังซ่อนรายละเอียดที่ไม่จำเป็นออกจากโลกด้านซึ่งเป็นอะไร แต่ยังแนวคิดนามธรรม ดังนั้นจากคำอธิบายข้างต้นดูเหมือนว่าการห่อหุ้มเป็นส่วนหนึ่งของสิ่งที่เป็นนามธรรมหรือเราสามารถพูดได้ว่ามันเป็นส่วนหนึ่งของสิ่งที่เป็นนามธรรม แต่ทำไมคำว่า encapsulation จึงถูกคิดค้นขึ้นเมื่อเราสามารถจัดการกับนามธรรมได้เท่านั้น? ฉันแน่ใจว่าควรมีความแตกต่างที่สำคัญซึ่งแยกพวกเขา แต่วัสดุส่วนใหญ่ในเน็ตกล่าวว่าเกือบเหมือนกันสำหรับพวกเขาทั้งสอง แม้ว่าคำถามนี้ได้รับการหยิบยกขึ้นมาในฟอรัมนี้ก่อนหน้านี้เช่นกัน แต่ฉันกำลังโพสต์มันอีกครั้งด้วยความสงสัยที่เฉพาะเจาะจง บางคำตอบยังกล่าวอีกว่าสิ่งที่เป็นนามธรรมเป็นแนวคิดและการห่อหุ้มคือการนำไปปฏิบัติ แต่ฉันไม่ซื้อสิ่งนี้ - ถ้าเป็นจริงฉันก็สามารถคิดได้ว่าแนวคิดที่แตกต่างกันสองอย่างนี้มีไว้เพื่อสร้างความสับสนให้เรา อัปเดต: -หลังจาก 5 ปีที่ฉันได้คำตอบของตัวเองซึ่งเป็นส่วนสำคัญตามคำตอบในโพสต์นี้และด้านล่าง แตกต่างระหว่างนามธรรมและการห่อหุ้มหรือไม่? encapsulation vs Abstraction ตัวอย่างโลกแห่งความจริง
137 java  oop 

6
การรวมไหใน classpath บน commandline (javac หรือ apt)
พยายามเรียกใช้โปรแกรมนี้ ฉันคิดว่าการตั้งค่าทุกอย่างในเว็บเซอร์วิสนั้นฉันจำเป็นต้องใช้ apt (แม้ว่าการใช้ javac ฉันมีปัญหาเดียวกัน) ฉันคิดว่าสิ่งที่ฉันได้รับคือการรวบรวมข้อผิดพลาด (แสดงที่ด้านล่าง) ผมคิดว่าสิ่งที่ผมต้องทำคือการรวมขวดนี้ในเส้นทางชั้นเรียนของฉัน: jsr181-api.jar (ต้นฉบับ) มีวิธีชั่วคราวแบบง่าย ๆ ในการทำสิ่งนี้ (บนโซลาริส) หรือไม่? ฉันไม่ต้องการเพิ่มลงในไฟล์ bash_rc ของฉัน (มีอยู่ตลอดไป) ฉันก็รู้ว่ามีวิธีที่จะทำมันโดยใช้ไฟล์ข้อความอย่างชัดแจ้ง แต่ที่ดูเหมือนซับซ้อนดังนั้นฉันยังไม่ได้ดูมัน ฉันสามารถทำสิ่งที่ชอบได้ไหม: javac HelloImp <listOfJars> หรือ ant HelloImp <listOfJars> รหัส: package server; import javax.jws.WebService; @WebService public class HelloImpl { /** * @param name * @return Say hello to the …
137 java  jar 

12
วิธีการใช้ปุ่มย้อนกลับ Android ActionBar?
ฉันมีกิจกรรมที่มีมุมมองรายการ เมื่อผู้ใช้คลิกที่รายการไอเท็ม "วิวเวอร์" จะเปิดขึ้น: List1.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) { Intent nextScreen = new Intent(context,ServicesViewActivity.class); String[] Service = (String[])List1.getItemAtPosition(arg2); //Sending data to another Activity nextScreen.putExtra("data", datainfo); startActivityForResult(nextScreen,0); overridePendingTransition(R.anim.right_enter, R.anim.left_exit); } }); วิธีนี้ใช้งานได้ดี แต่บนแถบการกระทำลูกศรย้อนกลับถัดจากไอคอนแอพจะไม่เปิดใช้งาน ฉันพลาดอะไรไปรึเปล่า?

12
ใน Java ฉันจะเรียกวิธีการของคลาสพื้นฐานจากวิธีการเอาชนะในคลาสที่ได้รับมาได้อย่างไร
ฉันมีคลาส Java สองคลาส: B ซึ่งขยายคลาส A อื่นดังนี้: class A { public void myMethod() { /* ... */ } } class B extends A { public void myMethod() { /* Another code */ } } ผมอยากจะเรียกจากA.myMethod() B.myMethod()ฉันมาจากโลก C ++และฉันไม่รู้วิธีการทำสิ่งพื้นฐานใน Java

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