public class Diff {
public Diff(String str) {

}

public static void main(String[] args) {
    Diff d1 = new Diff("Dimik");
    Diff d2 = new Diff("Dimik");

    System.out.println(d1.equals(d2));
    System.out.println(d1==d2);

}

}

উপরের কোড এ ২ টা প্রিন্ট statement ই False রিটার্ন করছে। কিন্তু আমরা জানি equals() মেথড content compare করে। এক্ষেত্রে content same হওয়া সত্ত্বেও কেন equals() মেথড false return করছে?**

asked 26 Nov '16, 15:44

Ashique's gravatar image

Ashique
638

edited 26 Nov '16, 15:45


equals মেথড ডিফল্ট ভাবে Object ক্লাসে ইমপ্লিমেন্ট করা আছে এই ভাবে

কোড :

public boolean equals(Object obj) {
    return (this == obj);
}

যার ফলে আপনি যদি আপনার কাস্টম ক্লাসে equals() মেথড কে Override না করেন তবে দুইটি অবজেক্টের রেফারেন্স একই কি না সেটা চেক করবে । কিন্তু কন্টেন্ট একই কি না সেটা চেক করবে না ।

আপনার কাস্টম ক্লাসে কনটেন্ট একই কি না সেটা চেক করার জন্য আপনাকে Object class এর equals() মেথড কে আপনার কাস্টম ক্লাসের [class Diff ] মধ্যে Override করতে হবে নিচের মত করে

কোড :

   @Override
    public boolean equals(Object ob) {
        if(ob instanceof Diff) {
            return str == ((Diff)ob).str;
        }
        else return false;
    }

এখন আপনি যদি System.out.println(d1.equals(d2)); প্রিন্ট করেন তবে সেটা true দেখাবে । এবং System.out.println(d1==d2); false দেখাবে ।

ধন্যবাদ :)

permanent link

answered 26 Nov '16, 19:49

menon's gravatar image

menon
4.7k334

edited 03 Dec '16, 03:47

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×210

question asked: 26 Nov '16, 15:44

question was seen: 594 times

last updated: 03 Dec '16, 03:47