regulärer Ausdruck mit String.matches

In der String Klasse gibt es eine Fassaden Funktion matches die nur die statische Funktion Pattern.matches aufruft. Es kann so leicht mit regulären Ausdrücken mit Strings gearbeitet werden. Ein Beispiel:

String i = „Wer den Schaden hat, braucht für den Spott nicht zu sorgen“;

System.out.println(i.matches(„.*Schaden.*“));

Was wird ausgegeben? „regulärer Ausdruck mit String.matches“ weiterlesen

Wie sieht eine gute API aus?

Gem. Joshua Bloch „If in doubt, leave it out!“.

Das heißt soviel wie, nur Methoden in eine API aufnehmen, von denen man sicher ist, dass sie auch benötigt werden. Methoden für die man kein verwender hat, sollte man nicht mit aufnehmen. Den Neues kann man leicht
hinzufügen, Bestehendes aber nicht so leicht verändert oder entfernen. Also sich auf das konzentrieren, was
in den Anforderungen gebraucht wird. Sonst wird das System unnötig komplex.

Siehe diesen Video bei ca. 24 min.

Generische Methoden

Das einzig seltsame an generischen Methoden ist, das die Type Variable (hier T) vor dem return Typ der Methode deklariert werden muss.

Hier ein Beispiel mit der getKlassenname Methode, die für alle Objekte den Klassennamen als String zurück gibt.

public class GenericMethods {

public static < T > String getKlassenname(T t) {

return t.getClass().getName();
}

public static void main(String[] args) {

System.out.println(GenericMethods.getKlassenname(new Integer(1)));

System.out.println(GenericMethods.getKlassenname("String"));

System.out.println(GenericMethods.getKlassenname(new ArrayList()));
}
}


Wie sieht das Ergebnis aus? „Generische Methoden“ weiterlesen

Java Quiz

Heute mal ein kleines Java Quiz. Schaut Euch mal diese AussenKlasse an, die eine innere Klasse (Innen) in einer Methode definiert hat:


public class AussenKlasse {

private final String aussenVar = "aussenVar";

public void aussenMethode() {

final String innenMethodeVar = "innenMethodeVar";

class Innen {
private final String innenVar = "innenVar";

public Innen() {
printInnen();
}

public void printInnen() {
System.out.println("aussenVar=" + aussenVar);
System.out.println("innenMethodeVar=" + innenMethodeVar);
System.out.println("innenVar=" + innenVar);
}
}
new Innen();
}

public static void main(String[] args) {
AussenKlasse a = new AussenKlasse();
a.aussenMethode();
}

}

Was ist richtig?

1. Die Klasse läßt sich nicht compilieren, da Klassen nicht in Methoden definiert werden dürfen.

2. Es gibt eine ClassCastException.

3. Es wird die printInnnen Methode ausgeführt.

4. Es wird folgendes auf System.out ausgegeben:
aussenVar=aussenVar
innenMethodeVar=innenMethodeVar
innenVar=innenVar

5. Es wird folgendes auf System.out ausgegeben:
aussenVar=
innenMethodeVar=innenMethodeVar
innenVar=innenVar

6. Es gibt eine NullPointerException

Lösung: „Java Quiz“ weiterlesen

Umlaute beim marshal von XML mit JAXB 2.0

Beim serialisieren von Objekten mit JAXB 2.0 in XML muss das Encoding gesetzt werden, sonst fehlen
die deutschen Umlaute. Dies geht so:

JAXBContext ctx = JAXBContext.newInstance(new Class[] { Exporter.class });
Marshaller marshaller = ctx.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING, "ISO-8859-1");
marshaller.marshal(this, new FileWriter(file));

Java Autoboxing

In Java 1.5 wurde das „autoboxing“ und „auto-unboxing“ zur Sprache hinzugefügt.
Es wird jetzt automatisch von einem „primitiven“ Datentyp wie int, boolean oder double in die korrespondierenden „boxing“ Datentype wie Integer, Boolean oder Double gewandelt. Siehe Beispiel 1. Was kommt aber in Beispiel 2 raus, wenn man die Klasse ausführt?


public class Unmöglich {

private static Integer i;

public static void main(String[] args) {

// Beispiel 1
int x = new Integer(42); // Integer nach int (unboxed)
Integer y = 42; // int nach Integer (boxed)

// Beispiel 2
if (i == 42){
System.out.println("Unmögliches autoboxing!");
}
}
}
„Java Autoboxing“ weiterlesen

UML Komposition

Eine Komposition ist ein Sonderfall der Aggregation, er beschreibt die Beziehung zwischen einem Ganzen und seinen Teilen. Ein Teil kann immer nur genau einem Ganzen zugeordnet sein.

In UML kann eine Komposition die an der ausgefüllten Raute am Ganzen, so dargestellt werden:

Eine Komposition in Java kann wie folgt erstellt werden „UML Komposition“ weiterlesen