rspec/rules/S6220/java/rule.adoc

28 lines
894 B
Plaintext
Raw Normal View History

2021-04-28 16:49:39 +02:00
Java 15 introduced feature of ``++sealed++`` classes. With ``++sealed++`` classes and interfaces you can specify a strict hierarchy of types and restrict possible inheritance.
Although this feature can help to make code safer, it is not applicable everywhere. Functional interfaces can not be sealed. This means that if an interface with a single abstract method is declared with a ``++sealed++`` keyword, its implementation can't be replaced with a lambda.
This rule reports an issue when an interface with a single abstract method is marked ``++sealed++``.
== Noncompliant Code Example
----
public sealed interface F permits ... { // Noncompliant
void f();
}
----
== Compliant Solution
----
public interface F { // Compliant
void f();
}
----
== See
* https://docs.oracle.com/javase/specs/jls/se16/preview/specs/sealed-classes-jls.html#jls-8.1.1.2[Sealed classes specification]