在equals中使用getClass进行类型判断

[改善Java代码]在equals中使用getClass进行类型判断
在这里插入图片描述

package com.question;

/**
 * @author kankan
 * @creater 2019-05-19 15:45
 */
public class Person {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Person() {
    }

    public Person(String name) {
        this.name = name;
    }

    @Override
    public boolean equals(Object obj) {
        if(obj instanceof Person){
            Person p = (Person) obj;
            // 将此 String 与另一个 String 比较,不考虑大小写
            return name.equalsIgnoreCase(p.getName().trim());
        }
        return false;
    }
}

package com.question;

/**
 * @author kankan
 * @creater 2019-05-19 15:46
 */
public class Employee extends Person{

    private int id;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public Employee(int id) {
        this.id = id;
    }

    public Employee(String name, int id) {
        super(name);
        this.id = id;
    }

    @Override
    public boolean equals(Object obj) {
        if(obj instanceof Employee){
            Employee e = (Employee) obj;
            return super.equals(obj)&& e.getId() == id;
        }
        return false;
    }

}

package com.question;

/**
 * @author kankan
 * @creater 2019-05-19 15:44
 */
public class Client {
    public static void main(String[] args) {
        Employee e1 = new Employee("张三",100);
        Employee e2 = new Employee("张三",1001);
        Person p1 = new Person("张三");
        System.out.println(p1.equals(e1));
        System.out.println(p1.equals(e2));
        System.out.println(e1.equals(e2));
    }
}

在这里插入图片描述

package com.question;

/**
 * @author kankan
 * @creater 2019-05-19 15:45
 */
public class Person {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Person() {
    }

    public Person(String name) {
        this.name = name;
    }

    @Override
    public boolean equals(Object obj) {
        if(obj!=null && obj.getClass() == this.getClass()){
            Person p = (Person) obj;
            if(p.getName()==null || name==null){
                return false;
            }else{
                return name.equalsIgnoreCase(p.getName());
            }
        }
        return false;
    }
}

package com.question;

/**
 * @author kankan
 * @creater 2019-05-19 15:46
 */
public class Employee extends Person{

    private int id;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public Employee(int id) {
        this.id = id;
    }

    public Employee(String name, int id) {
        super(name);
        this.id = id;
    }

    @Override
    public boolean equals(Object obj) {
        if(obj !=null && obj.getClass() == this.getClass()){
            Employee e = (Employee) obj;
            return super.equals(obj)&& e.getId() == id;
        }
        return false;
    }

}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值