gpt4 book ai didi

java - java泛型的模运算符

转载 作者:行者123 更新时间:2023-11-30 05:52:48 24 4
gpt4 key购买 nike

我有一个计算模数的java类。下面是代码

public class HashMapV2<T extends String,V> {

public void add(T key, V value){
int modulus = Integer.parseInt(key) % size;
}
}

add 函数在上面工作得很好,即如果你在类级别检查我有 T extends String。但是如果我将其更改为 T extends Integer 并将添加方法代码更改为类似

public class Modulo<T extends Integer,V> {

public void add(T key, V value){
int modulus = key % size;
}
}

然后我的代码提示:

Operator '%' cannot be applied to 'T','int'

为什么会提示?是不是将 Integer 拆箱为其原始类型?

最佳答案

  • 无需过多讨论类型系统的细节做不到。

  • <T extends String,V>以及 <T extends Integer,V>没有太大意义,因为 StringInteger最终类(意味着它们不能扩展)。

    实际上,您可以通过执行 int modulus = key.intValue() % size; 来使其工作。但如上所述,创建 T 是没有意义的。通用,因为它只能是 Integer .

因此,按如下方式声明您的类是有意义的:

class Modulo<V> {
public void add(int key, V value){
int modulus = key % size;
...
}
}

为了完整起见,您的其他类(class)也应该是:

class HashMapV2<V> {
public void add(String key, V value){
int modulus = Integer.parseInt(key) % size;
...
}
}

关于java - java泛型的模运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53631081/

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