88. Implementing interfaces in records
Java records cannot extend another class but they can implement any interface exactly as a typical class. Let's consider the following interface:
public interface PestInspector { public default boolean detectPest() { return Math.random() > 0.5d; } public void exterminatePest(); } The following snippet of code is a straightforward usage of this interface:
public record MelonRecord(String type, float weight) implements PestInspector { @Override public void exterminatePest() { if (detectPest()) { System.out.println("All pests have been exterminated"); } else { System.out.println( "This melon is clean, no pests have been found"); } } } Notice that the code overrides the abstract method exterminatePest() and calls the default method detectPest().