Co to są/są "dobre" biblioteki generujące kody java? Znalazłem pokolenie JaxMe, ale jest biedne i stare. Lubię generować kod java za pomocą kodu Java. Więc po prostu użyj lib, aby powiedzieć, że musi wygenerować konkretną klasę lub interfejs z polami X, metodami Y, itd., Które następnie są zapisywane w systemie plików. Wiem, że framework używają tego, ale nie może znajdź samodzielną bibliotekę .. - EdPoszukuje biblioteki generowania kodu java
Odpowiedz
Może powinieneś być zainteresowany cglib?
Istnieje kilka bibliotek z różnymi możliwościami i łatwością obsługi:
Prawdopodobnie będziesz musiał zapoznać się z API każdego z nich do określenia Który z nich jest bardziej odpowiedni do twoich celów.
Wszystkie te (oprócz może cglib) wydają się być bajtami narzędzia do edycji kodu, a nie generatory kodu źródłowego ... –
Dzięki za opinie, ale jak już wspomniano, są to generatory kodów bajtowych, a ja mówię o generatorach kodu źródłowego. Zauważam, że nie ma dojrzałego, samodzielnego projektu generatora kodu źródłowego, ale głównie podprojekt jak codemodel i apache JaxMe ... które często są "stare" – edbras
@edbras: Myślałem, że pytasz o generowanie kodu bajtowego, ponieważ jest to, co większość ludzi ma na myśli mówiąc o generowaniu kodu w Javie. Generalnie generatory kodów mają na celu umożliwienie wykorzystania abstrakcji wyższego poziomu. Jaka byłaby abstrakcja w twoim przypadku, biorąc pod uwagę, że wyjście jest już źródłem kodu źródłowego Java *? – thkala
Najbardziej lubię ASM. Używa wzorca gości, który może być nieco mylący na początku, kiedy generujesz kod; ale kiedy go pojąć, to jest naprawdę czyste i łatwe.
Zajrzałem również do tego trochę po chwili i miałem problemy ze znalezieniem czegoś użytecznego. Najbardziej obiecującym kandydatem znalazłem faktycznie wbudowane w kompilator:
Java annotation processing (APT)
Niedawno zawarte APT z javac, więc jest zawsze dostępny.
Nie miałem zbyt wiele czasu, aby to sprawdzić, ale na pierwszy rzut oka wydaje się nieskończenie potężne (generowanie/modyfikowanie kodu źródłowego lub kodu bajtowego, błędy rzutowania, ostrzeżenia, ...), ale może być nieco skomplikowanym, aby owinąć głowę. Być może istnieją dobre tutoriale, ale nie mam w tej chwili konkretnego linku.
Przetwarzanie adnotacji brzmi naprawdę niesamowicie, dopóki nie zaczniecie próbować go użyć. Ostatnim razem, gdy sprawdzałem, musieliście przeskoczyć przez niewiarygodną ilość obręczy do np. pobierz bieżący plik źródłowy, a Ty * nadal musisz zadzierać z systemem kompilacji, aby go użyć ... czasami brakuje mi preprocesora C ... – thkala
Jeśli twój program zna nazwę klasy, którą chce wygenerować, oraz nazwę i zawartość wszystkich członków, dlaczego do licha potrzebujesz generatora kodu? Czy nie wystarczy instrukcja print do strumienia wyjściowego? Interesujący generator kodu musi sam coś dodać, aby był przydatny. –
Informacje, o których mówisz, nie są znane wcześniej, a nawet jeśli są znane, mówisz o masie informacji, która zmienia się co roku z powodu zmian prawnych ... Przykład: xbrl/xsd, którego chcesz użyć do wygenerowania kod i odpowiednie sprawdzenia poprawności ... – edbras
Duplikat http://stackoverflow.com/questions/121324/a-java-api-to-generate-java-source-files –