gpt4 book ai didi

java - AspectJ ITD : implementing a generic interface

转载 作者:搜寻专家 更新时间:2023-11-01 03:11:16 24 4
gpt4 key购买 nike

我希望我的类实现一个接口(interface),但我想在一个方面提供使用 ITD 的方法的实现。 这可能吗?

接口(interface):

public interface CloningService<T> {
public T clone(T object);
}

默认实现:

public class DefaultCloningServiceImpl implements CloningService<T> {
public T clone(T object) {
// implementation of the clone method
}
}

具体实现:

public class PersonService implements CloningService<Person> {
// no code (!)
}

类 PersonService 将声明它实现了 CloningService 接口(interface),但这些方法的实际实现将在 DefaultCloningServiceImpl 中提供,并且一个方面会将它们引入 PersonService。

我按照 Eclipse.com 上的示例进行操作,并尝试使用 @DeclareParents 来实现上述功能。但是,我从 AspectJ 收到一个编译器错误,这与泛型有关。就好像@DeclareParents 注解没想到要使用泛型一样……

谢谢。

最佳答案

我建议您使用代码样式 aspectj 来解决此问题,而不是注释样式。

这可以简单地通过像这样的方面来完成:

aspect CloningServiceAspect {
declare parents : PersonService extends DefaultCloningServiceImpl<Object>;
}

为了使它更通用并附加到注释,您可以这样做:

aspect CloningServiceAspect {
declare parents : (@CloningService *) extends DefaultCloningServiceImpl<Object>;
}

如果您想将其打包到一个独立的 jar 中,只需确保添加您想要编织的所有代码,将此 jar 添加到它的方面路径(如果使用编译时编织)。

关于java - AspectJ ITD : implementing a generic interface,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9569575/

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