gpt4 book ai didi

Java:检查泛型是否为 int

转载 作者:行者123 更新时间:2023-12-03 18:41:49 25 4
gpt4 key购买 nike

public class Hashing<Key, Elem>

我想检查 Key 是否是一个 int,所以我将这几行放在构造函数中:

Key key = null;
if (!(key instanceof Integer)) {
throw new TypeOfKeyStillNotSupportedException();
}

但是,我是这样创建的:

tHash = new Hashing<Integer, Movie>(max);

然后该死的 TypeOfKeyStillNotSupportedException() 弹出。为什么会发生这种情况,我该如何正确处理?

提前致谢。

编辑:已经发现问题出在键被分配为空。现在的问题是:如何检查?

最佳答案

null不是 instanceof任何事物。由于类型删除,无法检查 Key 的类型直接在运行时。一种选择是让用户传入 Class<Key>到构造函数,以便您可以检查:

public Hashing(Class<Key> keyType, ...) {
if (keyType != Integer.class) {
throw new TypeOfKeyStillNotSupportedException();
}
...
}

...

Hashing<Integer, Foo> hashing = new Hashing<Integer, Foo>(Integer.class, ...);

为了避免重复类型参数,您可以创建一个静态工厂方法:

public static <K, E> Hashing<K, E> create(Class<K> keyType, ...) {
return new Hashing<K, E>(keyType, ...);
}

...

Hashing<Integer, Foo> hashing = Hashing.create(Integer.class, ...);

关于Java:检查泛型是否为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5878130/

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