gpt4 book ai didi

java - 使用泛型实现接口(interface),两种方法具有相同的删除功能

转载 作者:行者123 更新时间:2023-12-01 07:48:09 25 4
gpt4 key购买 nike

这是我的代码。我有一个基本接口(interface)来定义通用功能。

    interface BaseInterface<T> {
void baseFunc(T param)
}

interface MyInterface1 extends BaseInterface<MyEntity1> {
void func1()
}

interface MyInterface2 extends BaseInterface<MyEntity2> {
void func2()
}

我的类(class)是:

    abstract class BaseClass implements BaseInterface<T> {
// ...some common things
}

class ClassA extends BaseClass implements MyInterface1 {
@Override
public void func1() {...}

@Override
public void baseFunc(MyEntity1 param) {...}
}

class ClassB extends BaseClass implements MyInterface2 {
@Override
public void func2() {...}

@Override
public void baseFunc(MyEntity2 param) {...}
}

不同的类使用不同的 bean MyEntity1 和 MyEntity2 执行相同的操作。所以我用泛型 T 定义了 baseFunc()。

但是这里有一个问题。 “两种方法都具有相同的删除功能,但都没有覆盖其他 baseFunc(T) 和 baseFunc(MyEntity1)...”

如何解决这个问题?

顺便说一句,当我删除通用并将 baseFunc 移动到 MyInterface1 和 MyInterface2 时,它工作得很好。但我不认为这是最好的方法。

最佳答案

声明

abstract class BaseClass implements BaseInterface<T>

没有任何意义,除非T是一个实际的类。如果它正在实现通用接口(interface),则需要任一

  • 是一个泛型类,
  • 提供类型实参来代替泛型类型参数。

我相信你真正想写的是

abstract class BaseClass<T> implements BaseInterface<T>

BaseClass保留为通用类。然后您可以将其他类声明为

class ClassA extends BaseClass<MyEntity1> implements MyInterface1 

class ClassB extends BaseClass<MyEntity2> implements MyInterface2

那么传递给 baseFunc 方法的类型就不会发生冲突。

关于java - 使用泛型实现接口(interface),两种方法具有相同的删除功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45316671/

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