Narzedzie do sprawdzania obiektu w czasie kompilacji

0

Witam,
chciałbym zrobić narzędzie które bedzie wymuszało od programisty tworzenie obiektów tylko serializowanych (funkcje sprawdzajacą czy obiekt/klasa jest serializowana mam zrobioną).
Jak to zrobic np. żeby sprawdzanie wykonywało się na etapie kompilacji?

0

Bardziej chodziło mi to czy jest możliwośc, żeby dało się tworzyć tylko takie klasy które sa serializowane ?

0
  1. To klasy czy obiekty?
  2. Generalnie nie. Byłoby to zresztą bez sensu.
0

Zależy.

Zbytniego sensu nie widzę w wymuszeniu serializowalności klas ale:

  1. Jak projekt jest budowany w mavenie to można napisać własny plugin.
  2. Można też dopisać plugin do IDE, z którego korzystasz.

Ciągle jednak jest pytanie: po co?

0

Ponieważ u mnie w projekscie wszytskie akcje i ich atrybuty musza byc serializowane i chciałbym jakoś wymusić na pozniejszych deweloperach przymus tworzenia tylko klas serializowanych.

0

To czemu nie zrobisz bazowych klas dla tych akcji i ich atrybutów które będą serializowalne a wszystko będzie musiało z nich dziedziczyć? Wystatrczy że w swoim API przyjmujesz jako parametry AbtractAction i AbstractAttribute. Bo rozumiem że to wymuszenie wynika z tego że twoje API polega na tej serializowalności.

0

Wszystko się da. Potrzebujesz napisać własne narzędzie do instrumentacji kodu w czasie kompilacji, które zamiast manipulować bytecodem będzie tylko sprawdzać czy np. klasa implementuje odpowiedni interfejs https://theholyjava.wordpress.com/2010/06/25/implementing-build-time-instrumentation-with-javassist/

0

Klasy abstrakcyjne czy interfejsy to najlepsza opcja.

Ale jeśli już musisz to takie rzeczy powinny być wymuszane przez style guide czy inne wytyczne, a nie kompilacje, bo nie do tego ona służy. Dobrym miejscem na wymuszenie tego typu reguł jest jakiś plugin do jenkinsa czy czego tam używacie. Jest też np. SonarQube to analizowania poprawności kodu, nie robiłem tego, ale pewnie można dopisywać własne pluginy.

Z ciekawości: wszystkie klasy, te utilsowe czy pomocnicze też muszą być serializowalne?

0

@janiu mozesz powiedzieć czemu masz takie dziwne wymaganie? Bo ja rozumiem że pewne klasy muszą spełniać ten warunek ze względu na API w którym używasz tych obiektów i tam możesz to wymusić interfejsem, ale pozostałe klasy po co miałyby spełniać taki warunek? Cchesz zrzucać cały stan aplikacji na dysk?

1 użytkowników online, w tym zalogowanych: 0, gości: 1