专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java修炼终极指南:87. 在记录中定义多个构造函数

temp10 2024-10-17 16:21:32 java教程 13 ℃ 0 评论


如你所知,当我们声明一个Java记录时,编译器使用给定的组件创建一个默认构造函数,称为规范构造函数。我们也可以提供一个显式的规范/紧凑构造函数,如你在问题x中看到的。但是,我们可以更进一步,声明更多具有不同参数列表的构造函数。例如,我们可以有一个无参数的构造函数,用于返回一个默认实例:

Java修炼终极指南:87. 在记录中定义多个构造函数

public record MelonRecord(String type, float weight) {
  private static final String DEFAULT_MELON_TYPE = "Crenshaw";
  private static final float DEFAULT_MELON_WEIGHT = 1000;
  MelonRecord() {
    this(DEFAULT_MELON_TYPE, DEFAULT_MELON_WEIGHT);
  }   
}


或者,我们可以写一个只获取甜瓜类型或甜瓜重量作为参数的构造函数:

public record MelonRecord(String type, float weight) {
  private static final String DEFAULT_MELON_TYPE = "Crenshaw";
  private static final float DEFAULT_MELON_WEIGHT = 1000;
  MelonRecord(String type) {
    this(type, DEFAULT_MELON_WEIGHT);
  }
  MelonRecord(float weight) {
    this(DEFAULT_MELON_TYPE, weight);
  }   
}


此外,我们可以添加不适合任何组件的参数(这里,国家):

public record MelonRecord(String type, float weight) {
  private static Set<String> countries = new HashSet<>();
  MelonRecord(String type, int weight, String country) {
    this(type, weight);
    MelonRecord.countries.add(country);
  } 
}


所有这些构造函数有什么共同点?它们都通过this关键字调用规范构造函数。请记住,实例化Java记录的唯一方法是通过其规范构造函数,该构造函数可以直接调用,或者如你在前面的示例中看到的那样间接调用。因此,请记住,你添加到Java记录的所有显式构造函数都必须先调用规范构造函数。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表