a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 179|回复: 0

[其他] JAVA技巧:equals()方法

[复制链接]
发表于 2012-8-4 12:28:23 | 显示全部楼层 |阅读模式
 equals()体例应该具以下特征:   1.自反的:对任何x,x.equals(x)应该返回true;
( a- v- U7 B2 L2 t' |8 `+ t  2.对称的:对于x,y,x.equals(y)返回true,当且仅当y.equals(x)返回true;7 J4 e8 h: K! h1 X/ p8 G5 l
  3.传递的:对x,y,z,x.equals(y)和y.equals(z)返回true,则x.equals(z)返回true;# c# z- x+ x; Y  |3 ~6 Z
  4.一致的:对x,y,多次挪用x.equals(y)应该一致的返回true或false,如不美观在等价斗劲中的信息没有被改变的;# F- l+ t2 u* q( }4 e
  5.对于非空的对象x,x.equals(null)应该返回false;
0 E9 @8 f* {. h& I' k  按照此和一,以下语句凡是会被写在equals()体例里:/ x6 [+ j) Y+ i$ [% K4 l& Y- [
  Java代码5 c: Z# Z9 X* E" G& b5 y
  if(obj == this) return true;
4 m' S0 v% W% y+ ?( |& w  j  轨范员凡是会写如下语句:8 K8 v, G; D0 f3 z" o' S, I
  Java代码
( T0 y  f% i2 |" {/ H! _  if( obj instanceOf 当前类){
5 f# D) [: \6 B3 A' A! k! i  //todo# T+ ]6 I9 X. B& `1 ]3 o: {
  }! c7 c6 J3 m9 D: R; s- c7 X: w
  如不美观当前类没有子类,则没有问题。否则有可能与轨则2相冲突,因为子类对象也是父类对象的一个实例。! G! ]( N4 g1 q  n8 t) w" E1 x. s9 S
  解决体例:
1 O9 r+ H# A  ~% x$ d9 f  Java代码
+ ^9 F" o. J% D. W% v* P. y  if(obj == null) return false;
  s( i$ p+ B& h+ i- V; q  if(obj.getClass() != this.getClass()){7 o% U" D! x8 d8 z$ A0 o
  return false;: \1 i# l( I9 G' A' g  |
  }
6 c# J6 y8 _1 U  //TODO
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-21 21:39 , Processed in 0.170002 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表