2013-12-15 4 views
26

Ich habe eine Java-Klasse, die nur statische Methoden und Felder hat, so will ich kein Objekt für das erstellt werden. Ich kann dies auf zwei Arten erreichen,abstrakte Klasse vs private Konstruktor

  1. Klasse abstarct machen.
  2. Verwenden Sie privaten Konstruktor.

Welche der beiden ist besser?

+7

Sie können sich die Klasse 'java.lang.Math' ansehen (die nur statische Felder und Methoden hat). Sie haben den Konstruktor privat gemacht. http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Math.java. Stellen Sie sicher, dass Ihre Klasse auch endgültig ist. –

+0

+1 für den Kommentar, können unsere allgemeinen Abfragen in Java-Bibliotheken selbst gefunden werden. – Batty

Antwort

37

Sie sollten mit private Konstruktor gehen.

Wenn Ihre Klasse abstrakt ist, kann sie erweitert werden und Objekte können erstellt werden. Nach meinem Verständnis von der Frage, was Sie wollen, ist nicht instanziierbar Klasse.

von Item 4 of Effective java:

Versuch noninstantiability zu erzwingen, indem eine Klasse abstrakt machen funktioniert nicht. Die Klasse kann unterklassiert und die Unterklasse instanziiert werden. Darüber hinaus verleitet es den Benutzer zu der Annahme, dass die Klasse für die Vererbung ausgelegt ist.

+0

+1 für Effektives Java – Keerthivasan