Giriş
Bir arayüzün Object sınıfından override etmediği, static ve default metodlar hariç tek bir metod tanımlamasını sağlar. Arayüz generic parametreler alabilir veya almayabilir. Açıklaması şöyle
Örnek
Şöyle yaparız. Burada Object'ten gelen equals override edilse bile @FunctionalInterface tanımını bozmaz.
Şöyle yaparız.
3 parametre alıp Foo dönen arayüz için şöyle yaparız.
Exception atan metod tanımlamak için şöyle yaparız.
Bir arayüzün Object sınıfından override etmediği, static ve default metodlar hariç tek bir metod tanımlamasını sağlar. Arayüz generic parametreler alabilir veya almayabilir. Açıklaması şöyle
A functional interface is an interface that has just one abstract method (aside from the methods of Object), and thus represents a single function contract. This "single" method may take the form of multiple abstract methods with override-equivalent signatures inherited from superinterfaces; in this case, the inherited methods logically represent a single method.Bir sınıfın static metodu, FunctionalInterface'e cast edilebilir.
Örnek
Şöyle yaparız. Burada Object'ten gelen equals override edilse bile @FunctionalInterface tanımını bozmaz.
@FunctionalInterface
public interface Comparator<T> {
// abstract method
int compare(T o1, T o2);
//overriding public methods of `java.lang.Object`, so it does not count
boolean equals(Object obj);
}
Örnek
Aşağıdaki kod iki metod tanımlandığı için hata verir.
@FunctionalInterface
public interface Foo{
public void doSomething();
public void doSomethingElse();
}
Çıktı olarak şunu alırız.
Örnek
Şöyle yaparız.Invalid '@FunctionalInterface' annotation; Foo is not a functional interface
@FunctionalInterface
interface Rideable {
Car getCar (String name);
}
Örnek - Tek Generic ParametreŞöyle yaparız.
@FunctionalInterface
private interface Myonsumer<A> {
void accept(A a);
}
Örnek - 3 Generic Parametre3 parametre alıp Foo dönen arayüz için şöyle yaparız.
@FunctionalInterface
interface Function<LeadMaster,JSONObject,String,Foo>
{
public Foo apply(LeadMaster lead,JSONObject jsonObject,String str);
}
ÖrnekException atan metod tanımlamak için şöyle yaparız.
@FunctionalInterface
public interface Factory<R, T, X extends Throwable> {
public R newInstanceFor(T t) throws X;
}
Hiç yorum yok:
Yorum Gönder