美文网首页
Effective Java 第三章

Effective Java 第三章

作者: clp_a52a | 来源:发表于2017-08-08 13:35 被阅读0次

    覆盖equals()时:

    自反性 .............对于任何非null的,x.equals(x),返回true
    对称性..............对任何非null的,当且仅当y.equals(x)为真时,x.equals(y)为真
    传递性..............对任何非null的,如果x.equals(y)返回true,且y.equals(z)为true -> x.equals(z)为true
    一致性..............对任何非null的,如果x.equals(y)为true,则多次调用都为true
    x.equals(null)为false

    以下代码中的问题:
    CaseInsensitiveString cis=new CaseInsensitiveString("Polish");
    String s="polish"l;
    cis.equals(s);为true,但是s.equals(cis)为false
    正确做法是将与string的互操作去掉即可

    public final class CaseInsensitiveString{
        private final String s;
    
        puyblic CaseInsensitiveString(String s){
            if(null==s){
                throw new NullPointerException();
            }
            this.s=s;
        }
    
        @Override
        public boolean equals(Object o){
            if(o instanceof CaseInsensitiveString){
                return s.equalsIgnoreCase(
                    ((CaseInsensitiveString)o).s);
    
            }
            if(o instanceof String){
                return s.equalsIgnoreCase((String)o);
    
            }
            return false;
        }
    }

    相关文章

      网友评论

          本文标题:Effective Java 第三章

          本文链接:https://www.haomeiwen.com/subject/dctzlxtx.html