51 lines
1.2 KiB
Plaintext
51 lines
1.2 KiB
Plaintext
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
|
|
|
|
[source,java]
|
|
----
|
|
public sealed interface F permits ... { // Noncompliant
|
|
void f();
|
|
}
|
|
----
|
|
|
|
|
|
== Compliant Solution
|
|
|
|
[source,java]
|
|
----
|
|
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]
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
include::message.adoc[]
|
|
|
|
include::highlighting.adoc[]
|
|
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
include::../comments-and-links.adoc[]
|
|
endif::env-github,rspecator-view[]
|