Вот код:
IDefaultInterface.aj:
public interface IDefaultInterface {
public void m1();
static aspect Impl{
public int f1;
public void IDefaultInterface.m1(){
}
}
}
DefaulstInterfaceClass.java:
public class DefaultInterfaceClass implements IDefaultInterface {
@Override
public void m1() {
}
void mm() {
f1 = 9;
}
}
Во втором фрагменте кода я пытаюсьпереопределить метод m1 () и получить доступ к полю f1.Компилятор не позволяет ни один.
Как преодолеть эти ограничения?
Дополнительные мысли.Я бы не удивился, если бы в «AspectJ in action» 2 редакции не говорилось об использовании этой идиомы, что эффект должен быть таким же, как «расширение реализации по умолчанию для обоих (если в Java разрешено множественное наследование)».Я считаю, что множественное наследование связано с C ++ для большинства.Так почему бы не указать семантику, к которой привыкли люди?