Java Aspectj。在多个类中创建innter类型的方法
如果我说:Java Aspectj。在多个类中创建innter类型的方法,java,aspectj,aop,aspects,Java,Aspectj,Aop,Aspects,如果我说: public CountryState CountryState.find(long id) { return (CountryState) findById(CountryState.class, id); } 我正在创建一个在CountryState类中查找的方法 有没有办法在几个类中创建一个方法?我需要为我想要创建的每个类重复代码吗 我知道使用aspect可以使一个类从另一个继承,但是,这样做,我可以创建一个超类,因为java不接受多重继承。您实际上可以不使用
public CountryState CountryState.find(long id) {
return (CountryState) findById(CountryState.class, id);
}
我正在创建一个在CountryState类中查找的方法
有没有办法在几个类中创建一个方法?我需要为我想要创建的每个类重复代码吗
我知道使用aspect可以使一个类从另一个继承,但是,这样做,我可以创建一个超类,因为java不接受多重继承。您实际上可以不使用AOP来解决它。您可以使用OOP/OOD。有两种方法(我假设您只想编写一次方法):
public <T> find(long id, T targetClassObject) {
Class<? extends T> class = targetClassObject.getClass();
// do something i.e. call target method via reflection
}
public find(长id,T targetClassObject){
类此“模式”是在AspectJ中执行此操作的方式
声明一个接口:
interface Holder {}
public int Holder.getMeAnInt() {
return 42;
}
declare parents: @Anno * implements Holder;
在接口上进行类型间声明:
interface Holder {}
public int Holder.getMeAnInt() {
return 42;
}
declare parents: @Anno * implements Holder;
当你在一个接口上做出这样的声明时,你提供的是一个“默认实现”。因此该接口现在将定义getMeAnInt(),任何未实现getMeAnInt()的Holder实现都将获得默认实现
最后一个难题是使用declare parents指定实现接口的类型组:
interface Holder {}
public int Holder.getMeAnInt() {
return 42;
}
declare parents: @Anno * implements Holder;
所以现在,任何带有@Anno注释的类型都将实现Holder并具有getMeAnInt()方法。请参阅我的第二篇文章。