2016-05-11 6 views
3

In Java 8 Standardmethode Implementierung kann sowohl public und default Modifizierer. Was ist der Hauptunterschied zwischen zwei Methoden. Unter welchen Bedingungen welcher Typ folgen muss.java8 Schnittstelle erlaubt öffentliche Standardmethode

default int makeMul(int x, int y) { 
    return x * y; 
} 

public default int makeMul(int x, int y) { 
    return x * y; 
} 
+0

Verwandte: http://stackoverflow.com/questions/161633/should-methods-in-a-java-interface-be- deklariert-mit-oder-ohne-öffentlichen-Zugang-m –

Antwort

9

Hier ist nichts Besonderes an den Standardmethoden. Java hat es immer zugelassen, dass Schnittstellenmethoden öffentlich bekannt gemacht wurden, obwohl sie bereits implizit öffentlich sind.

Von JLS 9.4:

Jede Methode Erklärung im Körper einer Schnittstelle ist implizit Öffentlichkeit (§6.6). Es ist zulässig, aber aus Stilgründen nicht zulässig, den öffentlichen Modifizierer für eine Methodendeklaration in einer Schnittstelle redundant anzugeben.

2

Wie die anderen vorgeschlagen, das default Schlüsselwort hat zwei Hauptanwendungen:

  • Vor Java 8, es kann nur verwendet werden, um den Standardfall in einer switch-case Anweisung auszulösen.
  • Ab Java 8 dürfen Entwickler implementierte Methoden innerhalb von Schnittstellen bereitstellen (was vorher nicht möglich war), unter Verwendung des Schlüsselwortes default bei der Deklaration der Methode (public default int method()).

Soweit ich verstehe, mit dem default Schlüsselwort in einem Erklärung des Verfahrens, wenn sie in einer einfachen Klasse, überhaupt keinen Unterschied machen.

Für eine ausführliche Diskussion über den Zweck der default Methoden in Schnittstellen finden Purpose of Default or Defender methods in Java 8

Verwandte Themen