Używałem AOP Guice'a do przechwytywania niektórych wywołań metod. Moja klasa implementuje interfejs i chciałbym dodać adnotacje do metod interfejsu, aby Guice mógł wybrać odpowiednie metody. Nawet jeśli typ adnotacji jest adnotowany przy użyciu klasy implementującej Inherited adnotation, nie dziedziczy adnotacji, jak określono w dokumencie java Inherited:
Należy również zauważyć, że ta meta-adnotacja powoduje, że adnotacje są dziedziczone tylko z nadklas; adnotacje na zaimplementowanych interfejsach nie mają żadnego wpływu.
Co mogłoby być tego przyczyną? Zapoznanie się ze wszystkimi interfejsami, które klasa obiektu implementuje w środowisku wykonawczym, nie jest trudną rzeczą do zrobienia, więc musi być dobry powód takiej decyzji.
źródło
The field value is ambiguous.
błędu kompilatora podobnego do typu, podobnie jak w przypadku dwóch interfejsów deklarujących tę samą stałą z różnymi wartościami. Wiem, że to nie jest pole, ale wszystkie wartości adnotacji są rozwiązywane w czasie kompilacji, prawda? Funkcja, której tu brakuje, byłaby bardzo pomocna w wielu przypadkach. Swoją drogą, przepraszam za przywrócenie starego posta :).Foo
adnotację (MyClass
nie ma jej, wtedy interfejsy są przeszukiwane i pobierane w kolejności, w jakiej są poimplements
) i dlatego wypisuje "baz". Chłodny.