Zastanawiam się, czy byłoby możliwe wygenerowanie klasy, za pośrednictwem procesora adnotacji, która byłaby wewnętrzną klasą klasy do kompilacji. Na przykład podczas kompilowania klasy A
wygeneruj klasę A$Foo
. Zastanawiam się, czy istnieje sztuczka, którą można wykorzystać, czy też nie. Mam wrażenie, że możliwe jest wygenerowanie źródła, które będzie skompilowane w tym samym kodzie bajtowym, co klasa wewnętrzna. W czasie kompilacji/środowiska wykonawczego JVM pobierze ją dla klasy wewnętrznej i umożliwi dostęp do prywatnych pól klasy zewnętrznej.Czy można wygenerować wewnętrzną klasę klasy do kompilacji za pomocą procesora adnotacji?
Ideą tego pytania, które nie jest pytaniem noobiego, choć może wyglądać bardziej lub mniej technicznie, jest możliwość użycia prywatnego modyfikatora widoczności dla pól opatrzonych adnotacją, takich jak Sztylet, MasłoKnife itp. Prywatny modyfikator dopuszczający w celu łatwiejszego wykrywania nieużywanych pól, podczas gdy ochrona prywatna pakietów ukrywa je.
Czy istnieje jakieś obejście, w jaki sposób, aby uzyskać jak najlepsze z obu słów?
Nie. Nie można modyfikować istniejących plików źródłowych, wystarczy utworzyć nowe. Ale zawsze nazywam generowane klasy zgodnie z tym schematem, na przykład 'SomeInterface $ Impl', aby wskazać, że ta wygenerowana klasa należy do' SomeInterface'. –
Ale wiem dokładnie, co masz na myśli, dużo grałem z przetwarzaniem adnotacji i używam go dużo w moich bibliotekach i chciałbym, żeby to było możliwe ... Zazwyczaj generuję prywatne końcowe klasy implementacji, a następnie generuję publiczna klasa fabryczna, która tworzy wystąpienia tych interfejsów z prywatnymi klasami implementacji. Można to nazwać obejściem. –