Leere Methode in einer abstrakten Klasse

8

Ich habe gerade PMD installiert, um mein Java-Projekt zu analysieren. Wirklich schönes Werkzeug, sehr zu empfehlen. Wie auch immer, ich habe ein paar Fehler, die sagen:

  

"Eine leere Methode in einer abstrakten Klasse sollte stattdessen abstrakt sein"

Ich habe die PMD-Dokumentation ausgecheckt und die Erklärung sagt:

  

als Entwickler kann sich auf diese leere Implementierung verlassen, anstatt den passenden zu programmieren

Ich glaube also, ich verstehe den Grund für diesen Codefehler, aber bedenke das folgende Szenario: Ich habe eine abstrakte Klasse namens Entity. Diese Klasse verfügt über eine boolesche Methode mit Standardimplementierung. (steuert, ob beim Löschen die zugehörigen Entitäten gelöscht werden sollen). Nur einige der abgeleiteten Klassen überschreiben dieses Standardverhalten als true.

Soll ich die Standardimplementierung entfernen und alle abgeleiteten Klassen zwingen, ihr Verhalten zu deklarieren? Denkst du wirklich, dass dieses Muster so schlecht ist?

Erläuterung: PMD behandelt eine Methode mit einer einzelnen Rückgabeanweisung als leer.

    
LiorH 16.04.2009, 10:42
quelle

3 Antworten

9

Ich denke, es ist nur eine Richtlinie. Es sagt Ihnen, dass Sie vielleicht Ihr Design überdenken möchten, aber wenn Ihr Design bereits vollkommen Sinn macht, gibt es keinen Grund, einer Software statt Ihrem Gehirn zu folgen.

    
Mehrdad Afshari 16.04.2009, 10:45
quelle
0

Wenn Ihre Methode über eine Standardimplementierung verfügt, ist sie nicht leer? Oder vermisse ich etwas?

Für mich sieht eine leere Methode so aus:

%Vor%     
Frederik Gheysels 16.04.2009 10:44
quelle
0

Wenn Sie Java 1.8 verwenden, können Sie Entity statt einer abstrakten Klasse zu einer Schnittstelle machen und eine Standard Implementierung für Ihre Methode schreiben.

%Vor%

Sie können dies als Referenz verwenden: Ссылка

    
Shruthi V 01.09.2016 12:54
quelle