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

หมายถึงวิธี Java เท่ากับซึ่งระบุว่าวัตถุบางอย่าง "เท่ากับ" วัตถุนี้หรือไม่

8
การเอาชนะวิธี java เท่ากับ () วิธี - ไม่ทำงาน?
ฉันพบปัญหาที่น่าสนใจ (และน่าผิดหวังมาก) กับequals()วิธีการในวันนี้ซึ่งทำให้สิ่งที่ฉันคิดว่าเป็นคลาสที่ผ่านการทดสอบที่ดีและทำให้เกิดข้อผิดพลาดซึ่งทำให้ฉันใช้เวลานานมากในการติดตาม เพียงเพื่อความสมบูรณ์ฉันไม่ได้ใช้ IDE หรือดีบักเกอร์ - เป็นโปรแกรมแก้ไขข้อความแบบเก่าที่ดีและ System.out เวลามี จำกัด มากและเป็นโครงการโรงเรียน อย่างไรก็ตาม - ผมได้รับการพัฒนารถเข็นพื้นฐานซึ่งจะประกอบด้วยArrayListของBookวัตถุ เพื่อที่จะใช้addBook(), removeBook()และhasBook()วิธีการของรถเข็นที่ฉันต้องการที่จะตรวจสอบว่ามีอยู่แล้วในBook Cartฉันไปแล้ว - public boolean equals(Book b) { ... // More code here - null checks if (b.getID() == this.getID()) return true; else return false; } ทั้งหมดทำงานได้ดีในการทดสอบ ฉันสร้างวัตถุ 6 ชิ้นและเติมข้อมูล ดำเนินการเพิ่มลบลบมี () จำนวนมากCartและทุกอย่างทำงานได้ดี ฉันอ่านว่าคุณสามารถมีequals(TYPE …
150 java  equals  overriding 

21
CompareTo () เทียบกับเท่ากับ ()
เมื่อทดสอบความเท่าเทียมกันของStringJava ฉันใช้มาตลอดequals()เพราะสำหรับฉันแล้วนี่เป็นวิธีที่เป็นธรรมชาติที่สุดสำหรับฉัน ท้ายที่สุดชื่อของมันก็บอกอยู่แล้วว่าตั้งใจจะทำอะไร แต่เพื่อนร่วมงานของผมเพิ่งบอกฉันได้รับการสอนที่จะใช้แทนcompareTo() == 0 equals()สิ่งนี้ให้ความรู้สึกผิดธรรมชาติ (ตามที่compareTo()ตั้งใจไว้เพื่อให้มีการสั่งซื้อและไม่เปรียบเทียบเพื่อความเท่าเทียมกัน) และถึงแม้จะค่อนข้างอันตราย (เพราะcompareTo() == 0ไม่จำเป็นต้องหมายความถึงความเท่าเทียมกันในทุกกรณีแม้ว่าฉันจะรู้ว่ามันทำStringเพื่อฉันก็ตาม) เขาไม่ทราบว่าทำไมเขาถูกสอนให้ใช้compareTo()แทนequals()สำหรับString's, และฉันจะยังไม่พบเหตุผลใด ๆ นี่เป็นเรื่องของรสนิยมส่วนตัวจริงๆหรือมีเหตุผลที่แท้จริงสำหรับวิธีใดวิธีหนึ่ง?
118 java  string  equals  compareto 

9
วิธีการแทนที่วิธีการเท่ากับใน Java
ฉันกำลังพยายามแทนที่วิธีการเท่ากับใน Java ฉันมีคลาสPeopleซึ่งโดยทั่วไปมี 2 ช่องข้อมูลnameและage. ตอนนี้ฉันต้องการแทนที่equalsวิธีการเพื่อให้ฉันสามารถตรวจสอบระหว่างวัตถุ 2 คนได้ รหัสของฉันมีดังนี้ public boolean equals(People other){ boolean result; if((other == null) || (getClass() != other.getClass())){ result = false; } // end if else{ People otherPeople = (People)other; result = name.equals(other.name) && age.equals(other.age); } // end else return result; } // end equals แต่เมื่อฉันเขียนage.equals(other.age)มันทำให้ฉันมีข้อผิดพลาดเป็นวิธีการเท่ากับสามารถเปรียบเทียบสตริงเท่านั้นและอายุคือจำนวนเต็ม …
108 java  overriding  equals 

6
.equals และ .hashCode เริ่มต้นจะทำงานกับชั้นเรียนของฉันได้อย่างไร
สมมติว่าฉันมีชั้นเรียนของตัวเอง public class MyObj { /* ... */ } มีคุณลักษณะและวิธีการบางอย่าง ไม่ใช้งานเท่ากับไม่ใช้ hashCode เมื่อเราเรียกเท่ากับและ hashCode แล้วการใช้งานเริ่มต้นคืออะไร? จากคลาส Object? แล้วพวกมันคืออะไร? ค่าเริ่มต้นเท่ากับจะทำงานอย่างไร? hashCode เริ่มต้นจะทำงานอย่างไรและอะไรจะกลับมา? == จะตรวจสอบว่าพวกเขาอ้างอิงถึงวัตถุเดียวกันหรือไม่ดังนั้นจึงเป็นเรื่องง่าย แต่วิธีการเท่ากับ () และ hashCode () ล่ะ?

8
ควรใช้งานเท่ากับและแฮชโค้ดอย่างไรเมื่อใช้ JPA และ Hibernate
คลาสโมเดลควรมีการใช้งานเท่ากับและแฮชโค้ดในไฮเบอร์เนตอย่างไร อะไรคือข้อผิดพลาดที่พบบ่อย? การใช้งานเริ่มต้นดีเพียงพอสำหรับกรณีส่วนใหญ่หรือไม่ การใช้คีย์ธุรกิจมีความหมายหรือไม่? สำหรับฉันแล้วดูเหมือนว่ามันค่อนข้างยากที่จะทำให้มันทำงานได้ถูกต้องในทุกสถานการณ์เมื่อคำนึงถึงการดึงข้อมูลการสร้างรหัสพร็อกซีและอื่น ๆ
103 java  hibernate  orm  equals  hashcode 

3
มีวิธีการคงที่มาตรฐาน Java "null หรือเท่ากับ" หรือไม่?
หากต้องการบันทึกการพิมพ์และชี้แจงรหัสของฉันมีวิธีการต่อไปนี้เวอร์ชันมาตรฐานหรือไม่ public static boolean bothNullOrEqual(Object x, Object y) { return ( x == null ? y == null : x.equals(y) ); }
101 java  null  equals 

16
มียูทิลิตี้การสะท้อนของ Java เพื่อทำการเปรียบเทียบอย่างลึกซึ้งของสองวัตถุหรือไม่ [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน4 ชั่วโมงที่ผ่านมา ปรับปรุงคำถามนี้ ฉันกำลังพยายามเขียนการทดสอบหน่วยสำหรับการclone()ดำเนินการที่หลากหลายภายในโปรเจ็กต์ขนาดใหญ่และฉันสงสัยว่ามีคลาสที่มีอยู่ที่ไหนสักแห่งที่สามารถรับวัตถุประเภทเดียวกันสองชิ้นทำการเปรียบเทียบอย่างลึกซึ้งและบอกว่าพวกเขา 'เหมือนกันหรือไม่?

3
เหตุใด“ true” == true จึงแสดงเท็จใน JavaScript
MDC อธิบายตัว==ดำเนินการดังนี้ : หากตัวถูกดำเนินการทั้งสองไม่ใช่ประเภทเดียวกัน JavaScript จะแปลงตัวถูกดำเนินการจากนั้นใช้การเปรียบเทียบที่เข้มงวด ถ้าตัวถูกดำเนินการเป็นตัวเลขหรือบูลีนตัวถูกดำเนินการจะถูกแปลงเป็นตัวเลขถ้าเป็นไปได้ มิฉะนั้นถ้าตัวถูกดำเนินการเป็นสตริงตัวถูกดำเนินการอื่นจะถูกแปลงเป็นสตริงถ้าเป็นไปได้ ด้วยเหตุนี้ฉันจะประเมิน"true" == trueดังนี้: เป็นประเภทเดียวกันหรือไม่? ไม่ ตัวถูกดำเนินการเป็นตัวเลขหรือบูลีน? ใช่ เราสามารถแปลงทั้งสองเป็นตัวเลขได้หรือไม่? ไม่ ( isNaN(Number("true")) // true) ตัวถูกดำเนินการเป็นสตริงหรือไม่ ใช่ เราสามารถแปลงตัวถูกดำเนินการอื่นเป็นสตริงได้หรือไม่? ใช่ ( String(true) === "true" // true) ฉันลงเอยด้วยสตริง"true"และ"true"ซึ่งควรประเมินtrueแต่ JavaScript แสดงเท็จ ฉันพลาดอะไรไป?

15
เปรียบเทียบสองวัตถุด้วยตัวดำเนินการ .equals () และ ==
ฉันสร้างคลาสที่มีStringฟิลด์เดียว จากนั้นฉันสร้างวัตถุสองชิ้นขึ้นมาและฉันต้องเปรียบเทียบโดยใช้==ตัวดำเนินการและ.equals()ด้วย นี่คือสิ่งที่ฉันทำ: public class MyClass { String a; public MyClass(String ab) { a = ab; } public boolean equals(Object object2) { if(a == object2) { return true; } else return false; } public boolean equals2(Object object2) { if(a.equals(object2)) { return true; } else return false; } public static void …
85 java  class  object  methods  equals 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.