设想:
我在一个包中混合了类、接口和枚举的源文件,如下所示:
package com.mycompany.data;
class Dog {
// implementation
}
package com.mycompany.data;
class Cat {
// implementation
}
package com.mycompany.data;
enum Gender {
// gender options
}
package com.mycompany.data;
interface Animal {
// methods
}
// ... plus a lot more concrete classes and a few more interfaces ...
目标:让所有类实现一个新接口和一个新方法。
问题:我可以成功地将接口编织到类中,并排除枚举,但我不知道如何防止新接口也被添加到包中的接口中。
我的方面目前看起来像:
public aspect SecureAspect {
declare parents: com.mycompany.data.* && !java.lang.Enum+ implements Secure;
// add method from secure interface to everything implementing Secure
}
在我的示例中,匹配Dog
,Cat
和。Animal
我之前尝试过:
declare parents: com.mycompany.data.* && java.lang.Object+ && !java.lang.Enum+ implements Secure;
因为Animal.class.getSuperclass() == null
,相对于 Object,但无济于事。
我知道我可以通过将接口移出包来解决这个问题(如果事实证明这是不可能的,我很乐意这样做),但我很好奇是否有办法像我一样排除接口枚举。
很确定没关系,但我正在使用 javaagent 的加载时编织。