28 lines
928 B
Plaintext
28 lines
928 B
Plaintext
A Single Abstract Method (SAM) interface is a Java interface containing only one method. The Java API is full of SAM interfaces, such as ``++java.lang.Runnable++``, ``++java.awt.event.ActionListener++``, ``++java.util.Comparator++`` and ``++java.util.concurrent.Callable++``. SAM interfaces have a special place in Java 8 because they can be implemented using Lambda expressions or Method references.
|
|
|
|
|
|
Using ``++@FunctionalInterface++`` forces a compile break when an additional, non-overriding abstract method is added to a SAM, which would break the use of Lambda implementations.
|
|
|
|
|
|
*Note* that this rule is automatically disabled when the project's ``++sonar.java.source++`` is lower than ``++8++``.
|
|
|
|
|
|
== Noncompliant Code Example
|
|
|
|
----
|
|
public interface Changeable<T> {
|
|
public void change(T o);
|
|
}
|
|
----
|
|
|
|
|
|
== Compliant Solution
|
|
|
|
----
|
|
@FunctionalInterface
|
|
public interface Changeable<T> {
|
|
public void change(T o);
|
|
}
|
|
----
|
|
|