gpt4 book ai didi

java - 通用接口(interface): list of something specific

转载 作者:行者123 更新时间:2023-11-30 01:40:07 27 4
gpt4 key购买 nike

我想定义一个接口(interface)MyList,它是接口(interface)MyThing的列表。 MyList 的部分语义是它的操作对于未实现 MyThing 接口(interface)的对象没有任何意义。

这是正确的声明吗?

interface MyList<E extends MyThing> extends List<E> { ... }

编辑:(第 2 部分)现在我有另一个接口(interface),它返回 MyList 作为其方法之一。

// I'm defining this interface
// it looks like it needs a wildcard or template parameter
interface MyPlace {
MyList getThings();
}

// A sample implementation of this interface
class SpecificPlace<E extends MyThing> implements MyPlace {
MyList<E> getThings();
}

// maybe someone else wants to do the following
// it's a class that is specific to a MyNeatThing which is
// a subclass of MyThing
class SuperNeatoPlace<E extends MyNeatThing> implements MyPlace {
MyList<E> getThings();
// problem?
// this E makes the getThings() signature different, doesn't it?
}

最佳答案

是的,至少是这样 EnumSet 做到了。

public abstract class EnumSet<E extends Enum<E>><br/>
extends AbstractSet<E>

<小时/>

编辑第 2 部分的答案:

我不知道为什么返回类型是getThings()界面中的内容不会提示原始类型。我怀疑由于类型删除,接口(interface)中的警告即使存在也毫无用处(如果将返回类型更改为 List 也不会发出警告)。

对于第二个问题,从MyNeatThing开始延伸MyThing , E是在它的范围之内的。这就是使用 extends 的意义所在。绑定(bind)在通用参数中,不是吗?

关于java - 通用接口(interface): list of something specific,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/820922/

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