美文网首页
第 40 条:坚持使用Override注解

第 40 条:坚持使用Override注解

作者: 综合楼 | 来源:发表于2021-05-19 21:05 被阅读0次
坚持使用Override注解.jpeg
错误示例
// Can you spot the bug?
public class Bigram { 
  private final char first; 
  private final char second;
  public Bigram(char first, char second) { 
    this.first = first;
    this.second = second;
  }
  public boolean equals(Bigram b) {
    return b.first == first && b.second == second; 
  }
  public int hashCode() { 
    return 31 * first + second;
  }
  public static void main(String[] args) { 
    Set<Bigram> s = new HashSet<>(); 
    for (int i = 0; i < 10; i++)
      for (char ch = 'a'; ch <= 'z'; ch++) 
        s.add(new Bigram(ch, ch));
    System.out.println(s.size()); 
  }
}

正确示例
public class Bigram { 
  private final char first; 
  private final char second;
  public Bigram(char first, char second) { 
    this.first = first;
    this.second = second;
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    Bigram bigram = (Bigram) o;
    return first == bigram.first &&
            second == bigram.second;
  }

  @Override
  public int hashCode() {
    return Objects.hash(first, second);
  }

  public static void main(String[] args) { 
    Set<Bigram> s = new HashSet<>();
    for (int i = 0; i < 10; i++)
      for (char ch = 'a'; ch <= 'z'; ch++) 
        s.add(new Bigram(ch, ch));
    System.out.println(s.size()); 
  }
}

相关文章

  • 第 40 条:坚持使用Override注解

    错误示例 正确示例

  • 第36条 坚持使用Override注解

    考虑下面的程序,类Bigram 表示一个双字母组,考虑打印语句的输出结果 为什么结果是这样?bigrams采用的集...

  • ITEM 40: 坚持使用 override 注解

    ITEM 40: CONSISTENTLY USE THE OVERRIDE ANNOTATION  Java库包...

  • 提示四十

    提示四十:始终使用Override注解。文章先给了一个没有使用Override注解的例子,并让读者寻找问题。我看了...

  • Java注解

    本文以常用注解@Override为例,旨在描述清注解的作用与使用方法,并非详细讲解每一个注解。 @Override...

  • 注解汇总

    java注解 一、标准注解 1、@Override 重写函数2、@Deprecated 不鼓励使用(有更好的方...

  • Spring注解原理探索(二)

    之 Java中如何自定义注解 1.先看注解定义示例 @Override 源码定义: 使用@interface 表示...

  • 第四十条:坚持使用Override注解

    java类库包含了几种注解类型。对于传统的程序员而言,这里面最重要的就是@Override注解。这个注解只能用在方...

  • Java注解

    最近学习Retrofit,里面涉及到了注解的使用,虽然平时代码里面还是有看到很多的注解如:@Override, @...

  • Java注解

    基础注解Override WebServlet 元注解 @Target 注解的作用目标@Retention 注解的...

网友评论

      本文标题:第 40 条:坚持使用Override注解

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