gpt4 book ai didi

Java 泛型和接口(interface)

转载 作者:搜寻专家 更新时间:2023-11-01 01:30:01 26 4
gpt4 key购买 nike

有这样的设计:

interface Foo<T> {
void doSomething(T t);
}

class FooImpl implements Foo<Integer> {
//code...
}

interface Bar extends Foo {
//code...
}

class BarImpl extends FooImpl implements Bar {
//code...
}

它给我编译错误:

The interface Foo cannot be implemented more than once with different arguments: Foo and Foo

这个问题的简单解决方法是:

interface Bar extends Foo<Integer> {
// code...
}

Bar界面中的整数类型是完全没用的。

有没有更好的方法来解决这个问题?有更好的设计吗?

感谢您的建议。

编辑:

给出的解决方案:

> interface Bar<T> extends Foo<T> 

没问题,但它与我之前的解决方案相同。我不需要在 Bar 中输入 T。

让我举个更好的例子:

interface ReadOnlyEntity {
}

interface ReadWriteEntity extends ReadOnlyEntity {
}

interface ReadOnlyDAO<T extends ReadOnlyEntity> {
}

interface ReadWriteDAO<K extends ReadWriteEntity, T extends ReadonlyEntity> extends ReadOnlyDAO<T> {
}

这是一个好的设计吗?

最佳答案

我建议考虑 Bar 泛型的类型或重新考虑您的设计。如果没有对 Bar 有意义的对象,那么它不应该实现 Foo<T> .

编辑:

is this a good design?

不,我认为不是。

关于Java 泛型和接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3933156/

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