Archiwum

Archive for Lipiec 2010

Clojure way in java

22/07/2010 Dodaj komentarz

A shorter way to building anonymous class in java, that I described here, isn’t more readable. But it gives a chance writing in Java in more clojure way. It is an experiment to check how difficult it could be to write in that way.
An example (do something with array of string):

String[] tab = new String[] {"short", "Long Long Long Long String", "other long string"};
printFilteredStrings(tab);

private static void printFilteredStrings(String[] tab) {
    forEach.eval(
        sort.eval(
            getFliteredList.eval(
                populateListFromTab.eval(
                    tab,
                    new ArrayList<String>()),
                myFliter),
            myComparator),
        printIt);
}

Czytaj dalej…

Kategorie:Java Tagi:

Simplify in use anonymous class

21/07/2010 Dodaj komentarz

It is a further explanation of idea, which I have described in reply to this.
I have created few classes that help me to write less code related with anonymous classes.

An example:

public class ComparatorTest {

    static Comparator myComparator; // 1

    // 2
    static int myComparator(Object o1, Object o2) {
        return (o1.toString().length() - o2.toString().length());
    }

    public static void main(String[] args) {
        // 3
        AnonymousClassCreator.createStaticObjectForAllFields(ComparatorTest.class);
        List<String> list = new ArrayList<String>();
        list.add("aaaa");
        list.add("cc");
        list.add("b");

        Collections.sort(list, myComparator); // 4

        System.out.println(list);
    }
}

In 3 objects are initiated in all possible static fields (in this example only one). It uses reflection and convention, that method and field with the same name are linked. In this example in filed 1 is created object that implement interface Comparator which use method 2. Further in 4 there is no null.
Czytaj dalej…

Kategorie:Java Tagi:

Jeszcze o Lombok

15/07/2010 Dodaj komentarz

Miała to być bardziej wyczerpujące rozpoznanie tego co może oferować Lombok. Zaczęło się to od szukaniem sposobów na ulepszenie pisania kodu. Ale chęci, czy raczej czas się wyczerpał :), więc ograniczę się do hasłowego opisania tego co się udało zrobić.
Czytaj dalej…

Kategorie:Java Tagi: ,

O getterze

02/07/2010 Dodaj komentarz

Użycie get(set) w klasach których obiekty podlegają „serializacji” do czegoś innego niż java może prowadzić do niepożądanych zachowań. Przykład z mego doświadczenia to DWR, ale także w BlazeDS z tego co pamiętam może mieć to znaczenie. Tak więc jeśli mamy jakiś obiekt, który gra role paczki danych i chcemy go przepchnąć do klienta (przeglądarka) przy użyciu DWR. To nastąpi tu proces wywoływał po koli wszystkie geterów. Więc dodając metodę w takiej klasie należy uwzględnić to i nie tworzyć czegoś w stylu getCopy() lub getDomainObject(), zwłaszcza jeśli mają one cięższą logikę (lepiej użyć innego przedrostka). W tym przypadku może nastąpić to że serwer się napracuję, sieć się trochę bardziej zapcha, a klient i tak z tego nie skorzysta.

Oczywiście takie zachowanie może być jakoś konfigurowalne, ale dobrze zdawać sobie sprawę że (i nie tylko w tym przypadku DWR_a) można z czymś takim się spotkać.

Kategorie:Java Tagi: