gpt4 book ai didi

强制定义枚举类型的 Java 接口(interface)

转载 作者:行者123 更新时间:2023-12-03 22:47:32 25 4
gpt4 key购买 nike

我需要定义一个接口(interface)来重新定义哈希集之类的东西。

所以我有 get(byte key) 类型的方法。因为我不能使用像 String 这样的描述性键,所以我正在寻找一种通用的方法来定义在接口(interface)的某些实现中可用的键。我想为此使用一个枚举。但是是否可以在接口(interface)中强制定义此类枚举?

为了弄清楚我的意思,让我们看一个实现接口(interface)的示例类:

public class ByteHashsetImpl implements ByteHashset {
public enum Key {
STATE_A,
STATE_B,
STATE_C;
}

public enum Value {
VALUE_A,
VALUE_B,
VALUE_C;
}

public void get(Key k) {
/**/
}

}

我想确保每个实现都定义并使用自己的称为键和值的枚举。这样就可以为接口(interface)的每个实现使用类似 ByteHashsetImpl.Key 的方法访问键/值。

是否有可能,或者除了像编码准则这样的非正式定义之外还有其他选择吗?

最佳答案

你不能强制创建这样的枚举,但你可以强制类型参数成为一个枚举:

public interface Frobnicator<E extends Enum<E>> {
void frobnicate(E value);
}


enum Bar {
X, Y;
}

class BarFrobnicator implements Frobnicator<Bar> {
@Override
public void frobnicate(Bar value) {
// do stuff
}
}

在这种情况下,Frobnicator 可以简单地重用现有的enum 类,但 EFrobnicator 将始终是 enum 类型。

关于强制定义枚举类型的 Java 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6291911/

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