Wypowiedzi
-
Z tego co się orientuję to ASM też bezpośrednio nie pomoże - dzięki niemu można modyfikować klasę, a nie instancje klasy. Klasa po wczytaniu przez ClassLoadera nie może być już modyfikowana. Czyli potrzebny byłby Ci jeszcze jakiś mechanizm przepisania stanu z obiektu klasy istniejącej do nowego obiektu klasy nowo-utworzonej, ale to już sie chyba da napisać samemu :)
Co do 'czystej' Javy - to nie znam takich trików, twórcy biblioteki ASM chwalą się dobrą wydajnością, a JARki niewiele ważą. -
Z tego co piszesz, masz pliki *.class - a w nich już nie ma żadnych importów, tylko wszystkie odwołania do klas są pełne, np. do Stringa wygląda tak: java/lang/String. W tym wypadku nie widze problemu.
-
Co do samej implementacji singletona to jest jeszcze inne bardzo ciekawe rozwiązanie (od Javy 5) - zastosowanie enuma, np tak:
enum SingleClass {
INSTANCE;
// dodatkowe pola, metody itd.
}
Zalety:
- nie ma problemu z serializacją, JVM sama sie martwi wtedy o to, żeby był 1 obiekt
- Singleton jest typu 'lazy', czyli obiekt tworzy się przy pierwszym wywołaniu (co może być czasem wadą :P)
- bardziej odporny na refleksję
Wady:
- enumy nie mogą dziedziczyć ani być dziedziczone (mogą za to implementować interfejsy)
Poza tym polecam książke: "Effective Java 2nd Edition", Joshua Bloch.
Co do adnotacji singletona w EJB - będzie od EJB 3.1. -
Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy IBM
-
Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy IBM
-
Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy IBM
-
Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy IBM
-
Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy SCJP