Java覆盖equals (入门级)
来源:互联网 发布:约瑟夫问题c语言详解 编辑:程序博客网 时间:2024/05/23 12:15
一般说来,在Java编程的过程中不仅仅需要覆盖toString函数还是需要手工写一下equals的代码,前者逻辑较为简单只是需要返回一个满足自己设计的字符串即可。可后者就需要起码考虑到以下三点了
- 对象是否为空?
- 若是同一个对象 怎么处理?
- 类型相等后,有没有判断相等的唯一id属性?
口说无凭,贴一个简单的书上的代码给大家。
public class Account { String accountName; public Account(String theName) { this.accountName=theName; } public String getAccountName() { return accountName; } public void setAccountName(String ac) { this.accountName=ac; } public boolean equals(Account a) { //首先判断需要比较的Object是否为null //如果为null,返回false if(a==null) { return false; } //判断测试的是否为同一对象 //如果是同一对象,毋庸置疑应该返回true if(this==a) { return true; } //判断它们类型是否相等,如果不相等返回false if(this.getClass()!=a.getClass()) { return false; } //一般说来,只需比较两个对象的id属性是否相等即可判断两对象是否相等 return accountName.equals(a.accountName); } public void print(Account ac) { if(this.equals(ac)) { System.out.println("Welcome! " +this.accountName); }else { System.out.println("用户名错误"); } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Account a1=new Account("Alex"); Account a2=new Account("Mary"); a1.print(new Account("Alex")); a2.print(new Account("hengbao")); a2.print(a2); }}
虽然对于第二个思考的点,代码是直接认为相等的,但是这可能和一些实际情况不符,或者说有的时候我们不希望让它自己比较自己,可能需要抛出异常。对于第三点,我认为极其重要,尤其是在这个身份证都有重复的世界里,更应该恰当考虑如何生成唯一标识(GUID)。
0 0
- Java覆盖equals (入门级)
- java equals覆盖原则
- Java equals方法覆盖
- Java覆盖equals方法
- 覆盖 equals 方法时应同时覆盖 hashCode 。(java)
- java覆盖equals()方法时总要覆盖hashCode()
- java equals方法的覆盖
- java入门--equals方法(一)
- java入门--equals方法(二)
- 覆盖equals
- java-覆盖equals时规则不容忽视
- java 中equals方法的覆盖
- JAVA拾遗 - 如何正确地覆盖equals方法
- Java 覆盖equals和hashCode方法
- Effective Java (9) 覆盖equals时总要覆盖hashCode
- Effective Java 第九条:覆盖equals时总要覆盖hashCode
- 关于Java覆盖equals方法时必须覆盖hashCode方法
- effective java(9) 之覆盖equals时总要覆盖hashCode
- ios UITextField 设置默认提示
- 对付空中无线电波读取人的思想的方法
- echo使用!
- 枚哥词典01
- 关于scrollview中嵌套横向滑动控件时产生的体验不佳问题
- Java覆盖equals (入门级)
- 基于fl2440 内核linux3.0添加dm9000支持
- 【springmvc+mybatis项目实战】杰信商贸-33.出口报运修改+报运货物批量展现-批量修改控件2
- 一个关于STM8中断应用异常的话题
- 黑马程序员_Java多态性
- EXT 横排列表单样例
- to_char
- Linux下基于bitnami的Redmine安装部署以及结合Subversion的设置
- 网络解析封装