Java
Inhaltsverzeichnis
Operatoren
IF THEN ELSE
Abkürzung für if-then-else: ?:
boolean-expression ? op1 : op2 ; Bedeutet: IF boolean-expression = true THEN op1 ELSE op2;
Wichtig: Diese Operation gibt ein Wert zurück! Also entweder op1 oder op2, je nach dem, ob die boolean-expression true oder false ist!
Also:
newOp = boolean-expression ? op1 : op2 ; Bedeutet: IF boolean-expression = true THEN newOp = op1 ELSE newOp = op2;
Schleifen
break und continue
In for-, while- und do-while-Schleifen können break und continue eingesetzt werden:
- break
- Der Schleifendurchlauf wird beendet und die Abarbeitung bei der ersten Anweisung nach der Schleife fortgeführt.
- continue
- Geht zum Schleifenkopf zurück. Nach dem Auswerten des Fortschaltausdrucks wird im nächsten Schritt erneut geprüft, ob die Schleife weiter durchlaufen werden soll.
Collections
Sorting
Zum sortieren muss ein Objekt Comparable
sein. Wenn das aber nicht geht (z.B. wenn man ein und dasselbe Objekt auf verschiedene
arten sortiert werden soll (ein Telefonbuch nach Nachname, Vorname, Ort, ...)), dann muss das anders gelöst werden.
Ein Beispiel:
/**
* ItemSeqSortStrategy **
* Sort strategy to sort the ItemDigest by field seq
.
*
* * @author mic * */
public class ItemSeqSortStrategy implements ItemSortStrategy {
/** * @see ch.imis.ishop.web.srv.sort.ItemSortStrategy#sort(ch.imis.ishop.core.context.Context, java.util.List, ch.imis.ishop.web.srv.sort.SortLogic.SortOrder) */ public List<ItemDigest> sort(Context ctx, List<ItemDigest> list, SortOrder sortOrder) { // get comparator Comparator<ItemDigest> comparator = new ItemDigestSeqComparator();
// reverse sort order if(SortOrder.DESCENDING.equals(sortOrder)) { comparator = new ReverseComparator<ItemDigest>(comparator); }
// sort list with configured comparator Collections.sort(list, comparator);
return list; }
}
/**
* ItemDigestSeqComparator **
* Compare item field seq
.
*
* * * @author mic * * */
class ItemDigestSeqComparator implements Comparator<ItemDigest> {
/** * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) */ public int compare(ItemDigest o1, ItemDigest o2) { Long seq1 = o1.getSeq(); Long seq2 = o2.getSeq(); // both are null if(seq1 == null && seq2 == null) { return 0; }
if(seq1 == null) { return -1; } if(seq2 == null) { return 1; } return seq1.compareTo(seq2); }
}
Diverses
Java-VM-Args (kann z.B. in eclipse benutzt werden [eclipse.ini oder beim Starten von eclipse])
JavaDoc
Apache Config
web.xml
Web.xml ist die Konfigurationsdatei für den Servlet-Container.
- Element
- load-on-startup (optional)
- Wert
- Ganzzahl
- Beschreibung
- Definiert, dass das zugehörige Servlet beim Starten der Servers mit gestartet wird. Die Ganzzahl gibt die Reihenfolge an. Wenn 0, dann ist die Reihenfolge egal. Ab Servlet-Schema 2.4 darf load-on-startup nicht leer sein (<load-on-startup/>).
- Beispiel
- <load-on-startup>0</load-on-startup>
JSP
Interessante Links
Interfaces
Interfaces sind im Grunde genommen abstrakte Klassen, wo ALLE Methoden abstrakt sind. Das heisst, dass eine Implementierung
davon auch alle Methoden implementieren muss.
Auch Konstanten und Objekte (inkl. Instanzierung) können in Interfaces geschrieben werden. Beispiel:
public interface MyConstants { /** Constant 1 */ public static final String CTX_RUNTIME = "RUNTIME"; /** Constant 2 */ public static final String INDIV_ITEM = "INDIV_ITEM"; /** Objects */ public static final Map<String, String> myMap = new HashMap<String, String>(10); // Auch neue Objekte sind möglich ... }
Naming
Gängige Benennungen der Klassen und deren Bedeutung
- Factory
- Fabrik
- Wrapper
- Wandler