Kategorien
Themen

„IS“ oder „ALIAS“

Schauen Sie sich mal die Signaturen von vielen Methoden an:

public String meineMethode( String x1, String x2, String x3, …, String X25 )

Was passiert, wenn man mit der Reihenfolge durcheinander kommt? Der Compiler kann es nicht merken, vielleicht läuft das Programm sogar durch alle Tests. Und später in der produktiven Umgebung gibt es falsche Daten, die bei den Jahresabschlussarbeiten auffallen, …

Wie soll der Compiler oder das Runtime festgelegen, welcher der beiden Methoden mit gleichen Namen (z.B. connect()) und 4 Strings als Parameter zu nehmen ist?

Also einfach ein char[] oder eine byte[] dazwischen mischen? Sowas habe ich schon bei einem SFTP Library gesehen. Ist aber unschön.

Von String kann nicht abgeleitet werden, da das Laufzeitverhalten bei finalen Klassen günstiger ist. 
Und int ist keine Klasse, davon kann also überhaupt nicht abgeleitet werden.
Also baut man Klassen „Vorname“, „Nachname“, …, die jeweils ein Stringfeld enthalten, und wer den Vornamen mit einen anderen String vergleichen will, schreibt
Vorname vname = …;

vname.getInhalt().equals( …

Wie wäre eine „Klassen-Definition“
public class Vorname alias String;

Die Zuweisung „vname = nname;“ für zu einem Fehler, den schon der Compiler erkennt.
Der Vergleich vname.equals(nname) wäre aber möglich, da hier zwei Strings miteinander verglichen werden.
Ein 
String testWert = vname; 
ist statthaft, aber ein 
Vorname vname2 = „Peter“; 
würde ebenso wie
Vorname vname3 = new String(„Peter“); 
eine Warnung erzeugen.
Ein 
Vorname vname4 = new Vorname( „Peter“ );
oder ein 
String test = „Peter“;
Vorname vname5 = new Vorname( test ); 
ist der Königsweg.

Die Methoden
public Kunde erzeugeKunde( JurName name, HR_Eintrag hr, …
public Kunde erzeugeKunde( Vorname vname, Nachname nname, …
sind unterscheidbar.

Wenn man sich die Objektstrukturen anschaut, die aus WSDLs (also WebService Definitionen) z.B. eines SAP System, erzeugt werden, wird sich über jeden „Alias-String“ statt einer eigenen Klasse freuen.