Java记录以及为什么要使用它们[德语]
#初学者 #java #german

如果您是当前正在学习Java的初学者,那么您已经知道基本元素,例如类,方法,枚举等。但是,在Java的Java节上发现了记录。本简短的教程将向您解释Java中有哪些记录,以及有关如何在下一个项目中使用它的一些提示。
本教程中的所有信息均基于Java 16 records Dokumentation以及我自己的经验。

什么是记录?

简单地解释的是抽象Java Bean的记录。记录会自动定义构造函数的全部论点,并让公众访问记录的所有遗产。记录本身没有其他方法。它只是一个愚蠢的 Java对象,而没有其他功能。

如何实现记录?

ue枚举记录可以是Java类的一部分或表示独立文件。
例如,我们想定义休息时间。休息时间由热爱者(分子)和分母组成。如果我们想将此对象写为Java类,则看起来像这样:

public class Fraction {
  private double numerator;
  private double denominator;

  public Fraction() {
    this.numerator = 0.0;
    this.denominator = 1.0;
  }

  public Fraction(double numerator, double denominator) {
    this.numerator = numerator;
    this.denominator = denominator;
  }

  public void setNumerator(double numerator) {
    this.numerator = numerator;
  }

  public double getNumerator() {
    return this.numerator;
  }

  public void setDenominator(double denominator) {
    this.denominator= denominator;
  }

  public double getDenominator() {
    return this.denominator;
  }
}

您可以看到,这只是描述一个具有两个属性的类的代码。现在让我们看看与记录相同的事情:

public record Fraction(double numerator, double denominator) {}

简短,对吗?这是使用记录的最重要原因。该行使用所有参数构造函数和两个公共属性分子和分母。
如果您想创建此唱片的新实例,您可以像优秀的课程一样做。

Fraction fractionAsRecord = new Fraction(0.0, 1.0);

覆盖构造函数和Getter/setter

如果预定义的构造函数和getter/setters方法不明智地使用您的用例,则也可以将其写下来。对于构造函数,您想按下以下操作:

public record Fraction(double numerator, double denominator) {
  public Fraction(double numerator, double denominator) {
    if (numerator == 0 && denominator == 0) {
      throw new java.lang.IllegalArgumentException(
        "Invalid fraction: " + numerator + "/" + denominator
      );
    }
    this.numerator = numerator;
    this.denominator = denominator;
  }
}

您可以看到,在这里不知道覆盖注释。对于double numerator()void numerator(double numerator)的方法也可以做同样的方法。

静态属性和方法

现在,我们来到了记录的扩展功能。记录使您有可能定义静态属性和静态方法。就我们的示例而言,我们希望通过两个值分开。我们可以为此实现静态属性static double half = 2.0和静态方法static Fraction divideByTwo(Fraction fr)

public record Fraction(double numerator, double denominator) {
  static double half = 2;

  public static Fraction divideByTwo(Fraction fr) {
    return new Fraction(fr.numerator(), fr.denominator() * half);
  }
}

可以使用Fraction.divideByTwo(fraction)访问上面列出的方法。如您所见,只要这些是静态的,就可以使用通常的方法来扩展记录。使用记录时,这为您提供了更大的灵活性。

其他好的功能

java 16 Dokumentation中,其他许多扩展的功能是,我在此简短等待,但不要详细响应所有人。您可以在刚刚提到的“记录类的功能”部分中找到它们。
对我个人而言,选择是记录可以实现最美丽的接口。例如,您可以为一组记录定义一些基本方法。我给您一个简短的示例Mathobject

public interface Mathobject {
  public Mathobject divideByTwo();
}

如果我们实现了该接口的分数记录,我们可以描述我们的静态方法divideByTwo。然后看起来像这样:

public record Fraction(double numerator, double denominator) implements Mathobject {
  static double half = 2;

  @Override
  public Fraction multiplyByTwo() {
    return new Fraction(numerator, denominator * half);
  }
}

记录写下接口Mathobject的方法,让我们使用该方法中的两个分数属性,因为这不再是静态的。

文凭

记录最终要做什么?
它们产生的锅炉板代码较少。
此外,每个经验丰富的Java开发人员都知道记录的原理,因此可以轻松理解此视觉代码。因此,您的代码变得更加全面,更有专制。
最重要的是您必须撰写更少的代码的方面,这会节省时间。

保持编码。

Here you can find the english version.