2008-10-04 18 views

Antwort

4

Give Klasse A ein Konstruktor mit Paket-Level-Erreichbarkeit (und keine anderen Konstrukteuren).

Danke, Dave L., für das bisschen über keine anderen Konstrukteure.

+0

Alternativ alle als verschachtelte Klassen mit A nur einen privaten Konstruktor haben. –

+0

Das ist nicht so ästhetisch, obwohl: A.B, A.C ... –

+1

Import statisch zu retten, marxidad – Apocalisp

0

Sie könnten Klasse A, B, C, D in eine separate Verpackung legen und Klasse A nicht öffentlich machen.

+1

Eine private Klasse der Klasse A macht den Zweck der algebraischen Datentypen (d. H. Polymorphismus) zunichte –

3

Wahrscheinlich möchten Sie eine enum (Java> = 1.5). Ein Aufzählungstyp kann eine Reihe von festen Werten haben. Und es hat alle Vorzüge einer Klasse: Sie können Felder und Eigenschaften haben und sie dazu bringen, eine Schnittstelle zu implementieren. Ein Enum kann nicht erweitert werden.

Beispiel:

enum A { 

    B, 
    C, 
    D; 

    public int someField; 

    public void someMethod() { 
    } 


} 
+0

Wenn ich mich nicht irre, sind in Ihrem Beispiel B, C und D Werte, keine Typen. – Apocalisp

+0

Ah, du hast Recht ... du kannst nicht viele Bs erstellen :-( – asterite

+0

Aber es ist gut, wenn du nicht willst, dass die Subtypen einen Zustand haben (im Beispiel implementieren sie gar keine Methoden). –