gpt4 book ai didi

java - 使用惯用语时无法覆盖方法且无法访问字段 "Providing a default interface implementation"

转载 作者:行者123 更新时间:2023-12-01 05:41:08 25 4
gpt4 key购买 nike

这里是代码:
IDefaultInterface.aj:

public interface IDefaultInterface {
public void m1();
static aspect Impl{
public int f1;
public void IDefaultInterface.m1(){

}
}
}

DefaultInterfaceClass.java:

public class DefaultInterfaceClass implements IDefaultInterface {

@Override
public void m1() {

}

void mm() {

f1 = 9;
}
}

在第二段代码中,我尝试重写 m1() 方法并访问 f1 字段。编译器不允许两者之一。
如何克服这些限制?

其他想法。如果在“AspectJ in action”第 2 版中没有提到使用这个习惯用法,那么效果应该与“扩展两者的默认实现(如果 Java 中允许多重继承)”相同,我不会太好奇。我相信对于大多数人来说,多重继承与 C++ 相关。那么,为什么不提供人们习惯的语义呢?

最佳答案

我对 AspectJ 不太熟悉,但我看到了一些有问题的事情:您的方面试图在接口(interface)中定义非抽象方法,并且您的类试图访问字段 f1,就好像它拥有该字段一样,当您在方面声明 f1 时。我不太确定你想在这里做什么,但我认为你没有以正确的方式去做。

关于java - 使用惯用语时无法覆盖方法且无法访问字段 "Providing a default interface implementation",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7139924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com