public class StandardFunctionalInterfaceCheck {
@FunctionalInterface
interface NotStandard {
static double toDouble(int a) { // ignore static
return a;
}
default short toShort(int a) { // ignore default
return (short) a;
}
String toLong(int a, short b); // unknown standard interface
}
@FunctionalInterface
interface LikeBiFunctionIntegerLongString { // Noncompliant {{Drop this interface in favor of "java.util.function.BiFunction<Integer,Long,String>".}}
String m(Integer x, Long y);
}
@FunctionalInterface
interface BooleanSupplierWithAnExtraMember { // Noncompliant {{Make this interface extend "java.util.function.BooleanSupplier" and remove the functional method declaration.}}
static int ANSWER = 42;
boolean m();
}
@FunctionalInterface
interface ShortName extends java.util.function.BiFunction<Integer,Long,String> { // Compliant, used to simplify the name
}
@FunctionalInterface
interface ExtendedBooleanSupplier extends java.util.function.BooleanSupplier { // Compliant, used to add default method
default boolean isFalse() {
return !getAsBoolean();
}
}
@FunctionalInterface
interface BooleanSupplierWithException { // Compliant, add exception in signature
boolean m() throws java.io.IOException;
}
@FunctionalInterface
interface FunctionWithTypeParameter { // Compliant, usage example: its/sources/fluent-http/src/main/java/net/codestory/http/internal/Unwrappable.java
<T> T m(Class<T> x);
}
@FunctionalInterface
interface SerializableBooleanSupplier extends java.io.Serializable { // Compliant, has extensions
boolean m();
}
@FunctionalInterface
interface LikeBiFunctionXLongString<X> { // Noncompliant {{Drop this interface in favor of "java.util.function.BiFunction<X,Long,String>".}}
String m(X x, Long y);
}
@FunctionalInterface
interface LikeBiFunctionXYString<X,Y> { // Noncompliant {{Drop this interface in favor of "java.util.function.BiFunction<X,Y,String>".}}
String m(X x, Y y);
}
@FunctionalInterface
interface LikeBiFunctionXYZ<X,Y,Z> { // Noncompliant {{Drop this interface in favor of "java.util.function.BiFunction<X,Y,Z>".}}
Z m(X x, Y y);
}
@FunctionalInterface
interface LikeBiFunctionTUString<T,U> { // Noncompliant {{Drop this interface in favor of "java.util.function.BiFunction<T,U,String>".}}
String m(T x, U y);
}
@FunctionalInterface
interface LikeBooleanSupplier { // Noncompliant {{Drop this interface in favor of "java.util.function.BooleanSupplier".}}
boolean m();
}
@FunctionalInterface
interface LikeDoubleBinaryOperator { // Noncompliant {{Drop this interface in favor of "java.util.function.DoubleBinaryOperator".}}
double m(double x, double y);
}
@FunctionalInterface
interface LikeDoubleConsumer { // Noncompliant {{Drop this interface in favor of "java.util.function.DoubleConsumer".}}
void m(double x);
}
@FunctionalInterface
interface LikeDoublePredicate { // Noncompliant {{Drop this interface in favor of "java.util.function.DoublePredicate".}}
boolean m(double x);
}
@FunctionalInterface
interface LikeDoubleSupplier { // Noncompliant {{Drop this interface in favor of "java.util.function.DoubleSupplier".}}
double m();
}
@FunctionalInterface
interface LikeDoubleToIntFunction { // Noncompliant {{Drop this interface in favor of "java.util.function.DoubleToIntFunction".}}
int m(double x);
}
@FunctionalInterface
interface LikeDoubleToLongFunction { // Noncompliant {{Drop this interface in favor of "java.util.function.DoubleToLongFunction".}}
long m(double x);
}
@FunctionalInterface
interface LikeDoubleUnaryOperator { // Noncompliant {{Drop this interface in favor of "java.util.function.DoubleUnaryOperator".}}
double m(double x);
}
@FunctionalInterface
interface LikeIntBinaryOperator { // Noncompliant {{Drop this interface in favor of "java.util.function.IntBinaryOperator".}}
int m(int x, int y);
}
@FunctionalInterface
interface LikeIntConsumer { // Noncompliant {{Drop this interface in favor of "java.util.function.IntConsumer".}}
void m(int x);
}
@FunctionalInterface
interface LikeIntPredicate { // Noncompliant {{Drop this interface in favor of "java.util.function.IntPredicate".}}
boolean m(int x);
}
@FunctionalInterface
interface LikeIntSupplier { // Noncompliant {{Drop this interface in favor of "java.util.function.IntSupplier".}}
int m();
}
@FunctionalInterface
interface LikeIntToDoubleFunction { // Noncompliant {{Drop this interface in favor of "java.util.function.IntToDoubleFunction".}}
double m(int x);
}
@FunctionalInterface
interface LikeIntToLongFunction { // Noncompliant {{Drop this interface in favor of "java.util.function.IntToLongFunction".}}
long m(int x);
}
@FunctionalInterface
interface LikeIntUnaryOperator { // Noncompliant {{Drop this interface in favor of "java.util.function.IntUnaryOperator".}}
int m(int x);
}
@FunctionalInterface
interface LikeLongBinaryOperator { // Noncompliant {{Drop this interface in favor of "java.util.function.LongBinaryOperator".}}
long m(long x, long y);
}
@FunctionalInterface
interface LikeLongConsumer { // Noncompliant {{Drop this interface in favor of "java.util.function.LongConsumer".}}
void m(long x);
}
@FunctionalInterface
interface LikeLongPredicate { // Noncompliant {{Drop this interface in favor of "java.util.function.LongPredicate".}}
boolean m(long x);
}
@FunctionalInterface
interface LikeLongSupplier { // Noncompliant {{Drop this interface in favor of "java.util.function.LongSupplier".}}
long m();
}
@FunctionalInterface
interface LikeLongToDoubleFunction { // Noncompliant {{Drop this interface in favor of "java.util.function.LongToDoubleFunction".}}
double m(long x);
}
@FunctionalInterface
interface LikeLongToIntFunction { // Noncompliant {{Drop this interface in favor of "java.util.function.LongToIntFunction".}}
int m(long x);
}
@FunctionalInterface
interface LikeLongUnaryOperator { // Noncompliant {{Drop this interface in favor of "java.util.function.LongUnaryOperator".}}
long m(long x);
}
@FunctionalInterface
interface LikeBinaryOperator<T> { // Noncompliant {{Drop this interface in favor of "java.util.function.BinaryOperator<T>".}}
T m(T x, T y);
}
@FunctionalInterface
interface LikeConsumer<T> { // Noncompliant {{Drop this interface in favor of "java.util.function.Consumer<T>".}}
void m(T x);
}
@FunctionalInterface
interface LikeDoubleFunction<R> { // Noncompliant {{Drop this interface in favor of "java.util.function.DoubleFunction<R>".}}
R m(double x);
}
@FunctionalInterface
interface LikeIntFunction<R> { // Noncompliant {{Drop this interface in favor of "java.util.function.IntFunction<R>".}}
R m(int x);
}
@FunctionalInterface
interface LikeLongFunction<R> { // Noncompliant {{Drop this interface in favor of "java.util.function.LongFunction<R>".}}
R m(long x);
}
@FunctionalInterface
interface LikeObjDoubleConsumer<T> { // Noncompliant {{Drop this interface in favor of "java.util.function.ObjDoubleConsumer<T>".}}
void m(T x, double y);
}
@FunctionalInterface
interface LikeObjIntConsumer<T> { // Noncompliant {{Drop this interface in favor of "java.util.function.ObjIntConsumer<T>".}}
void m(T x, int y);
}
@FunctionalInterface
interface LikeObjLongConsumer<T> { // Noncompliant {{Drop this interface in favor of "java.util.function.ObjLongConsumer<T>".}}
void m(T x, long y);
}
@FunctionalInterface
interface LikePredicate<T> { // Noncompliant {{Drop this interface in favor of "java.util.function.Predicate<T>".}}
boolean m(T x);
}
@FunctionalInterface
interface LikeSupplier<T> { // Noncompliant {{Drop this interface in favor of "java.util.function.Supplier<T>".}}
T m();
}
@FunctionalInterface
interface LikeToDoubleFunction<T> { // Noncompliant {{Drop this interface in favor of "java.util.function.ToDoubleFunction<T>".}}
double m(T x);
}
@FunctionalInterface
interface LikeToIntFunction<T> { // Noncompliant {{Drop this interface in favor of "java.util.function.ToIntFunction<T>".}}
int m(T x);
}
@FunctionalInterface
interface LikeToLongFunction<T> { // Noncompliant {{Drop this interface in favor of "java.util.function.ToLongFunction<T>".}}
long m(T x);
}
@FunctionalInterface
interface LikeUnaryOperator<T> { // Noncompliant {{Drop this interface in favor of "java.util.function.UnaryOperator<T>".}}
T m(T x);
}
@FunctionalInterface
interface LikeBiConsumer<T,U> { // Noncompliant {{Drop this interface in favor of "java.util.function.BiConsumer<T,U>".}}
void m(T x, U y);
}
@FunctionalInterface
interface LikeBiPredicate<T,U> { // Noncompliant {{Drop this interface in favor of "java.util.function.BiPredicate<T,U>".}}
boolean m(T x, U y);
}
@FunctionalInterface
interface LikeFunction<T,R> { // Noncompliant {{Drop this interface in favor of "java.util.function.Function<T,R>".}}
R m(T x);
}
@FunctionalInterface
interface LikeToDoubleBiFunction<T,U> { // Noncompliant {{Drop this interface in favor of "java.util.function.ToDoubleBiFunction<T,U>".}}
double m(T x, U y);
}
@FunctionalInterface
interface LikeToIntBiFunction<T,U> { // Noncompliant {{Drop this interface in favor of "java.util.function.ToIntBiFunction<T,U>".}}
int m(T x, U y);
}
@FunctionalInterface
interface LikeToLongBiFunction<T,U> { // Noncompliant {{Drop this interface in favor of "java.util.function.ToLongBiFunction<T,U>".}}
long m(T x, U y);
}
@FunctionalInterface
interface LikeBiFunction<T,U,R> { // Noncompliant {{Drop this interface in favor of "java.util.function.BiFunction<T,U,R>".}}
R m(T x, U y);
}
@FunctionalInterface
interface UsingArrays { // Compliant - Array used as return type
byte[] bar(int value);
}
}