record in Java

Java 16 enhances the programming language with records. Records provide a compact syntax for declaring classes which are plain immutable data carriers.
* records cannot extend other classes
* records are final
* records can implement interfaces
* records cannot create extra instance fields
* the components of a record are implicitly final
* records can have static fields
* the static methods, static fields, static initializers are allowed
* we can declare constructors
* we can add explicit accessors
* extra instance methods are allowed
* nested records are allowed. You can declare records inside a class. The nested records are implicitly static.
* generic records are allowed
* records can be annotated
* records cannot be abstract
```
record Person(String name, String gender, int age) {}

public class RecordExample {
  public static void main(String[] args) {
      Person person = new Person("Jenny", "Female", 35);
      System.out.println(person.name());
      System.out.println(person.gender());
      System.out.println(person.age());
      System.out.println(person);
  }
}
```