Optionale in der Schnittstelle

7

Wenn ich eine Methode in meiner Schnittstelle optional machen möchte, ist das möglich? Wie ?

    
Pan 05.05.2011, 15:01
quelle

9 Antworten

7

Geben Sie im Javadoc an, dass implementierende Klassen möglicherweise UnsupportedOperationException auslösen.

    
artbristol 05.05.2011, 15:03
quelle
6

Sie können nicht.

Sie können jedoch eine zweite Schnittstelle erstellen und die "optionale" Methode auf diese Schnittstelle verschieben.

Auf diese Weise kann eine Klasse eine oder beide Schnittstellen implementieren.

    
Justin Niessner 05.05.2011 15:03
quelle
4

Sie können eine Methode in einer Schnittstelle nicht optional machen, obwohl Sie einen der folgenden Schritte ausführen könnten:

  1. Machen Sie Ihre Schnittstelle zu einer Abstact-Klasse und implementieren Sie nur die "optionale" Methode

  2. Implementieren Sie die Schnittstelle von Ihren Klassen und werfen Sie NotImplementedException (oder ähnliches)

  3. Machen Sie die Schnittstelle mit einer inneren Klasse, die die optionale Methode

  4. enthält
Yet Another Geek 05.05.2011 15:06
quelle
4

Wie gesagt: Sie können nicht. Aber Sie können Interfaces erweitern, also könnten Sie etwas wie:

konstruieren %Vor%

Auf diese Weise können Sie InterfaceA für das Implementieren von Klassen mit nur einer bestimmten Methode und InterfaceB verwenden, wenn Sie beide Methoden verwenden können.

Aber natürlich hängt alles von Ihrem Design ab.

    
Lucas de Oliveira 05.05.2011 15:07
quelle
2

Nein, das kannst du nicht.

Eine Schnittstelle ist ein Vertrag, und muss implementiert sein.

    
Mitch Wheat 05.05.2011 15:03
quelle
1

Nein, das ist nicht möglich. Der einfachste Weg, eine Methode in einer Schnittstelle zu implementieren, besteht darin, sofort eine Ausnahme auszulösen. Sie sollten Ihr Schriftdesign überdenken.

    
Isaac Truett 05.05.2011 15:03
quelle
1

Sie können das nicht tun 8) Von Was ist eine Schnittstelle?

>
  

Wenn Ihre Klasse behauptet, eine Schnittstelle zu implementieren, müssen alle von dieser Schnittstelle definierten Methoden in ihrem Quellcode erscheinen, bevor die Klasse erfolgreich kompiliert wird.

Vielleicht sollten Sie eine abstrakte Klasse verwenden.

    
Piccolomomo 05.05.2011 15:06
quelle
1

Sie können eine abstrakte Klasse derselben Schnittstelle erstellen, dieselbe Klasse kann die gleichen Methoden aber optional aufrufen.

    
Oliver Dixon 22.12.2014 20:04
quelle
0

Soweit ich weiß, ist das nicht möglich.

    
Ian Jacobs 05.05.2011 15:03
quelle

Tags und Links