brainbaking/content/wiki/code/java.md

1.9 KiB

+++ title = "java" draft = false tags = [ "", "Users", "jefklak", "Downloads", "pages", "code", "java" ] date = "2013-05-17" +++

Java Stuff

Inhoudsopgave

Snippets

Upcasting hacks & tricks

Vies van instanceof? Gebruik isAssignableFrom om op een abstracte logica te implementeren die een interface nodig heeft enkele niveaus verder.

Op die manier hebben we geen diamond inheritance nodig! Check it out:

    @SuppressWarnings("unchecked")
    final void generateUidIfNotYetFilledIn() {
        if (HasUid.class.isAssignableFrom(this.getClass())) {
            HasUid hasUid = (HasUid) this;
            if (isEmpty(hasUid.getUid())) {
                hasUid.setUid(getEntityUidGenerator().generateFor((Class<? extends HasUid>) this.getClass()));
            }
        }
    }

ReplaceAll case Insensitive

Geen StringUtils van apache commons method beschikbaar als replaceIgnoreCase... Stom!

public class Main {
  public static void main(String[] argv) throws Exception {
    String str = "Abc abc";

    String result = str.replaceAll("(?i)abc", "DEF");

    System.out.println("After replacement:<br/>n" + "   " + result);

  }
}

Vergeet niet speciale regex karakters te escapen zoals <br/><br/>[ de brackets etc.

Pitfalls

Java versies

  1. Java 7 & java 6 mixen: gebruik -XX:-UseSplitVerifier als VM argument wanneer exceptions zoals "expecting invalid stackmap frame..." zich voordoen. - Wat doet dit arumgent eigenlijk? Java 7 Bytecode verification

APIs

  1. Arrays.asList() retourneert een read-only lijst! add() throwt een UnsupportedOperationException.
  2. guava's transform() ea zijn lazy-loaded, let op met transacties en inner class state!