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()
.