21xrx.com
2024-11-22 16:15:20 Friday
登录
文章检索 我的文章 写文章
Effective Java 第三版:提高Java开发者的实践技能
2023-06-13 09:38:41 深夜i     --     --
Effective Java

《Effective Java》是由Java大师Joshua Bloch所著,被誉为Java开发者的必读之书。经过多年的发展,Java语言已经成为全球最受欢迎的编程语言之一。不过,在使用Java语言时,开发者可能会遇到各种各样的问题和挑战。

为了提高Java开发者的实践技能,Joshua Bloch撰写了《Effective Java》第三版。本书详细介绍了Java编程中的最佳实践,并提供了实用的代码示例以供参考。以下是一些《Effective Java》中的核心主题和代码案例:

1. 创建和销毁对象

- 使用静态工厂方法代替构造器


public static Person createPerson(String firstName, String lastName) {

  return new Person(firstName, lastName);

}

- 构造器参数过多时,使用builder模式


public class Person {

  private final String firstName;

  private final String lastName;

  private final int age;

  private Person(Builder builder)

    this.firstName = builder.firstName;

    this.lastName = builder.lastName;

    this.age = builder.age;

  

  public static class Builder {

    private String firstName;

    private String lastName;

    private int age;

    public Builder(String firstName, String lastName)

      this.firstName = firstName;

      this.lastName = lastName;

    

    public Builder age(int age)

      this.age = age;

      return this;

    

    public Person build() {

      return new Person(this);

    }

  }

}

2. 对象的通用方法

- 重写equals方法时,遵循通用约定


@Override

public boolean equals(Object o) {

  if (o == this)

    return true;

  

  if (!(o instanceof Person))

    return false;

  

  Person person = (Person) o;

  return person.firstName.equals(firstName) && person.lastName.equals(lastName) && person.age == age;

}

- 重写hashCode时,遵循通用约定


@Override

public int hashCode() {

  int result = 17;

  result = 31 * result + firstName.hashCode();

  result = 31 * result + lastName.hashCode();

  result = 31 * result + age;

  return result;

}

- 使用toString方法返回有意义的字符串


@Override

public String toString() {

  return String.format("Person(firstName=%s, lastName=%s, age=%d)", firstName, lastName, age);

}

3. 泛型

- 使用泛型来编写类型安全的代码


public static > T max(List list) {

  if (list == null || list.isEmpty())

    return null;

  

  T result = list.get(0);

  for (int i = 1; i < list.size(); i++) {

    T t = list.get(i);

    if (t.compareTo(result) > 0)

      result = t;

    

  }

  return result;

}

- 使用有限制的通配符来提高API的灵活性


public static Double sum(List list) {

  double sum = 0.0;

  for (Number number : list) {

    sum += number.doubleValue();

  }

  return sum;

}

本书还涵盖了Java 8和Java 9的新功能,例如lambda表达式和模块化系统。通过学习并应用本书中的最佳实践,您可以编写更安全、更健壮、更高效的Java代码。

、Java最佳实践、代码案例

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复