Java8 ermöglicht eine statische Methode. Es wäre wirklich hilfreich, wenn irgendjemand erklären würde, in welchem Szenario wir möglicherweise eine Schnittstelle zu statischen Methoden benötigen.Statische Methoden in Java8
Vielen Dank im Voraus.
Java8 ermöglicht eine statische Methode. Es wäre wirklich hilfreich, wenn irgendjemand erklären würde, in welchem Szenario wir möglicherweise eine Schnittstelle zu statischen Methoden benötigen.Statische Methoden in Java8
Vielen Dank im Voraus.
Ressource gefunden werden here und here:
Nun, haben Sie die jdk Quellen gesucht? Wie wäre es mindestens zwei Beispiele:
Function.identity()
, die eine Implementierung wie hat:
static <T> Function<T, T> identity() {
return t -> t;
}
Oder Predicate.isEqual
, die wie folgt aussieht:
static <T> Predicate<T> isEqual(Object targetRef) {
return (null == targetRef)
? Objects::isNull
: object -> targetRef.equals(object);
}
Allgemeinen Ich behandle sie als statische Factory-Methoden
die eine Instanz dieser Schnittstelle zurückgeben.Ich habe ein großartiges Beispiel dafür, dass wir in unserem Code-Basis verwenden (but it comes from Holger initially):
public interface UncheckedCloseable extends Runnable, AutoCloseable {
@Override
default void run() {
try {
close();
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
static UncheckedCloseable wrap(AutoCloseable c) {
return c::close;
}
default UncheckedCloseable nest(AutoCloseable c) {
return() -> {
try (UncheckedCloseable c1 = this) {
c.close();
}
};
}
}
Von dem, was ich habe understood-
1.These Methoden nicht von Klassen überschrieben, die erben werden können es.
2. Sie sind nur für die Funktionen dieser Schnittstelle zugänglich (dürfen nicht überschrieben werden).
So können sie verwendet werden, wann immer Sie möchten, dass die Funktion (die nicht statisch noch überschrieben ist) Ihrer Schnittstelle diese Funktion verwenden (die statisch ist).
So können Sie Ihre eigene Geschäftslogik darin verwenden, Ihre eigenen Sortiermethoden, einige Einschränkungen oder Begrenzungen.
So kann es verwendet werden, als wenn jemand Ihre Funktion anruft und Sie Ihre eigenen Sachen darin mit Hilfe anderer Funktionen machen.Es ist so, dass der andere Programmierer Ihre Schnittstelle implementiert, um eine Funktion zu benutzen, die eine gewisse Unterstützung für sein eigenes Programm bietet (zB Kalender, der Notizen speichern, Ihre Meetings planen kann, usw.).
Aber denken Sie daran, dass Sie die Funktion, die diese statische Funktion aufruft, nicht überschrieben haben sollten.
Haben Sie versucht, Google für etwas wie "Java 8 Interface statische Methode"? –