首页 新闻 会员 周边

Java 泛型、接口、继承,这个情况怎么办?

0
悬赏园豆:5 [已解决问题] 解决于 2023-02-23 16:50

项目问题很复杂,我简化成一个小模型,代码如下

三个数据类,有继承关系,实现项目中会有多个子类,但简单起见只写两个

一个业务接口,对每一种类型的数据,都会有一个业务的实现。但是其中的 f1 方法会是所有的业务都使用的共同的逻辑,所以在业务接口和业务实现的中间加了一个抽象的 AbstractService 实现类,让方法 f1 在这里实现。实现项目中,f1 方法会有很多,简单起见我只写一个。但是如此一来,业务实现类在泛型上就不好实现了,怎么编译都通不过。

原因么,大概知道,只要去掉抽象的 AbstractService 类,实现逻辑全部写到子类中去就可以了,但一方面这类方法有点多,另一方面维护也麻烦(如果逻辑有点bug,要把所有的子类代码全部改一次)。

 

public class Fruit {
}

public class Apple extends Fruit {
}

public class Orange extends Fruit{
}

public interface IService <F extends Fruit>{
    void f1(F f);
    void f2(F f);
}

public abstract class AbstractService implements IService<Fruit>{
    public void f1(Fruit f) {
        System.out.println(f);
    }
}


public class AppleService extends AbstractService implements IService<Apple>{
public void f2(Apple f) {
        System.out.println(f);
    }
}
背锅狼的主页 背锅狼 | 初学一级 | 园豆:60
提问于:2023-02-20 17:53
< >
分享
最佳答案
0

自己已经解决了

抽象实现类不要声明实现接口就可以了

背锅狼 | 初学一级 |园豆:60 | 2023-02-23 16:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册