Java: Unterschied zwischen den Versionen

Aus Claudio's Wiki
Wechseln zu: Navigation, Suche
(IF THEN ELSE)
(Schleifen)
Zeile 31: Zeile 31:
 
;continue
 
;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.
 
: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 <code>Comparable</code> 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.<br />
 +
Ein Beispiel:
 +
/**
 +
* ItemSeqSortStrategy
 +
*
 +
* <p>
 +
* Sort strategy to sort the ItemDigest by field <code>seq</code>.
 +
* </p>
 +
*
 +
* @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
 +
*
 +
* <p>
 +
* Compare item field <code>seq</code>.
 +
* </p>
 +
*
 +
*
 +
* @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==
 
==Diverses==

Version vom 7. Juli 2009, 09:37 Uhr

Operatoren

freehep


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