Was ist der Zweck einer statischen Methode in der Schnittstelle von Java 8?

8

Warum werden statische Methoden von Java 8 unterstützt? Was ist der Unterschied zwischen den beiden Zeilen in der Hauptmethode im unteren Code?

%Vor%

Wie wir oben sehen können, bin ich nicht einmal in B implementiert. Welchen Zweck würde es haben, eine statische Methode in einer Schnittstelle zu haben, wenn wir die gleiche statische Methode in einer anderen Klasse schreiben und aufrufen können? Wurde es für andere Zwecke als Modularität eingeführt? Und unter Modularität verstehe ich Folgendes:

%Vor%

Nur um ähnliche Methoden zusammenzusetzen.

    
Tarun Mohandas 20.08.2017, 10:07
quelle

2 Antworten

8

Wenn Sie in der Vergangenheit eine Schnittstelle Foo hatten und Interface-bezogene Utils oder Factory-Methoden gruppieren wollten, müssten Sie eine separate utils-Klasse FooUtils erstellen und alles dort speichern.

Diese Klassen würden außer dem Namen nichts gemeinsam haben und außerdem müsste die utils-Klasse final gemacht werden und einen privaten Konstruktor haben, der eine unerwünschte Verwendung verbietet.

Jetzt können Sie dank der statischen Methoden der Schnittstelle alles an einem Ort behalten, ohne zusätzliche Klassen zu erstellen.

Es ist auch wichtig, nicht alle guten Praktiken zu vergessen und nicht alles gedankenlos auf eine Interface-Klasse zu werfen - wie in diese Antwort

    
Grzegorz Piwowarek 20.08.2017, 10:17
quelle
5

Es gibt hauptsächlich zwei Gründe für statische Methoden innerhalb von Schnittstellen: create instances dieser Schnittstellen (und der Code ist eindeutig, wo er sein muss); wie Stream.of oder Stream.generate , usw. Und der zweite Grund wäre utility methods , die für all diese Typen allgemein sind.

Immer noch muss eine Schnittstelle clear sein und muss keine zusätzliche Unordnung in der API erzeugen. Sogar der jdk-Code hat Collectors - statische Factory-Methoden, aber zum Beispiel eine Collector -Schnittstelle zur gleichen Zeit. Diese Methoden könnten in Collector interface zusammengeführt werden, aber das würde die Oberfläche klobiger machen, als sie sein muss.

    
Eugene 20.08.2017 10:43
quelle