Ist es möglich, Java-Typen mit einem teilweise qualifizierten Namen zu referenzieren? Wenn ja, wie?
Das Szenario: Ich finde mich häufig mit einer Datenklasse (z. B. Activity
), die eine Sicht benötigt. Meine übliche Praxis war es, diese Klasse ActivityView
zu nennen, was funktioniert, aber diese Sichtklasse endet immer in einem tld.organization.project.views
-Namespace, wo das Suffix "View" völlig überflüssig ist.
Ich möchte das Suffix "View" entfernen (also wären die Typen tld.organization.project.Activity
und tld.organization.project.views.Activity
), aber das bedeutet, dass ich den Namespace verwenden muss, um die Typen zu qualifizieren, wenn ich sie in derselben Klasse referenziere. Die Verwendung des Namespace zur Qualifizierung von Typreferenzen ist an sich keine schlechte Sache, aber die Wiederholung des vollqualifizierten Namens beider Typen ist repetitiv und schwer zu lesen.
Der Verweis auf einen teilweise qualifizierten Typ (etwa ~.Activity
oder ~.views.Activity
) würde diesen Fehler entfernen. Eine Art von Typ-Aliasing würde antworten, aber es scheint, dass Java solche Funktionalität nicht unterstützt. Gibt es Alternativen?
Nein, das können Sie mit Paketen in Java nicht machen. Am ehesten wäre es möglich, Dinge in verschachtelte Hierarchien von Klassen anstatt von Paketen zu organisieren. Zwischen diesem und dem strategischen statischen Import könnte man den gewünschten Effekt erzielen, obwohl es eine schrecklich unordentliche Lösung wäre. Zum Beispiel:
%Vor%und:
%Vor%was man dann als
bezeichnen kann %Vor%Ich würde vorschlagen, dass die Probleme, die Sie mit Namen haben, auf ein Designproblem hinweisen, das aussortiert werden muss.
P.S. Wenn ich jemals an einem Projekt arbeiten musste, das den Unterricht organisiert, muss ich mich vielleicht selbst erschießen.
P. P. S. Eigentlich würde ich wahrscheinlich versuchen, dich zuerst zu erschießen.
Versuchen Sie zu sagen, dass Sie nicht schreiben wollen:
%Vor% jedes Mal, wenn Sie ActivityView
verwenden?
Verwenden Sie importieren
z. Anstatt den vollständig qualifizierten Namen der Klasse JOptionPane
wie folgt zu verwenden:
Importieren Sie die Klasse am Anfang wie folgt:
%Vor%Jetzt können Sie JOptionPane direkt in Ihrer Klasse verwenden.