接口冲突 java

Interface conflicts java

我目前正在从事一个包含三种不同类型的 CRUD 的大项目。我的 ICrud 界面包括 <t> 以在我实现它时放入所需的数据类型。

我的问题是,当我在第三个 class 中实现它时,我希望其中一个方法 (readAll) 使用另一种数据类型,而不是其他 4 个方法 (CRUD)。这有可能吗?

现在我有 readAll 方法 return 匹配的数据类型但是 returning null 因为它没有被使用,而是创建了另一个方法 readall2() return 正确的数据类型,但不是我的界面的一部分。

ICrud 界面:

public interface ICrud<T>  {

List<T> readAll();

List<T> read(int cvr);

void create(T t);

void delete(int cvr);

void update(T t, int id);
}

我是如何实现的:

@Service
public class AdminRepository implements Ilogin<Admin>, ICrud<Driver>, 
IAdmin<Company> 

我希望如何使用 readAll:

public List<Company> readAll()

(不是驱动程序,而是接口中所有其他方法的驱动程序)

我想补充;起初,我在 iAdmin 中有 readAll,因为它需要公司,但我在其他 6 个 classes 中也有这个 readall 方法,它们也实现了 ICrud。

感谢您的帮助。 :)

你有一个设计问题,我建议你阅读以下内容中的 SOLID 原则link:

https://scotch.io/bar-talk/s-o-l-i-d-the-first-five-principles-of-object-oriented-design

在正确的设计中,如果您不实现其中一种方法(您的情况下是 readAll),则根本不应该实现接口。这意味着您正在混合关注点,并且您的界面必须拆分为更小的界面。也许将 readall 拆分为一个单独的界面将解决您的问题。例如,代替 ICrud,创建一个单独用于写操作的接口,一个用于读操作,一个用于 readAll。

有很多方法可以解决您的问题,即按原样保留接口 ICrud,例如使用对象作为重新运行类型,或者泛型或动态。但是从根本上解决您的问题的方法是遵循我上面提到的良好设计。