Этот 'шаблон' - это то, как вы делаете это в AspectJ.
Объявление интерфейса:
interface Holder {}
Создайте объявления intertype на интерфейсе:
public int Holder.getMeAnInt() {
return 42;
}
Когда вы делаете такое объявление в интерфейсе, вы предоставляете «реализацию по умолчанию».Таким образом, интерфейс теперь будет определять getMeAnInt (), и любые реализации Holder, которые не реализуют getMeAnInt (), получат реализацию по умолчанию.
В последнем фрагменте головоломки нужно использовать объявление родителей, чтобы указать группутипы реализуют ваш интерфейс:
declare parents: @Anno * implements Holder;
Теперь любой тип, аннотированный @Anno, будет реализовывать Holder и иметь метод getMeAnInt ().