gpt4 book ai didi

java - 为什么我通过将 Integer 类型参数设置为泛型中的 Integer 变量而出错?

转载 作者:行者123 更新时间:2023-11-29 07:24:41 26 4
gpt4 key购买 nike

我有以下程序:

class MyGenClass{

public <T> void setAge(T ageParam){
Integer age = ageParam;
}

}
class Program{

public static void main(String args[]){

MyGenClass gnClass = new MyGenClass();
gnClass.<Integer>setAge(80);

}

}

事实上,我正在传递 Integer 那么为什么 ageParam 没有分配给 age。当我这样做时:

class MyGenClass{

public <T> void setAge(T ageParam){
T age = ageParam;
}

}

为什么泛型类型变量没有赋给Integer类型变量age其实泛型类型变量ageParamInteger 。必须将 ageParam 分配给类型为 T 的变量是强制性的吗?这背后的场景是什么?

最佳答案

不能保证 T 类型与 Integer 兼容。为了清楚起见,您必须使用以下方法,其中 TInteger 的子类型:

public <T extends Integer> void setAge(T ageParam){
age = ageParam;
}

但是,我认为这没有意义。为了可变性考虑以下方法:

class MyGenClass {
Number age;
public <T extends Number> void setAge(T ageParam){
age = ageParam;
}
}

因此以下是可能的(可以推断显式类型参数,认为):

MyGenClass gnClass = new MyGenClass();
gnClass.<Integer>setAge(80);
gnClass.<Long>setAge(80L);
gnClass.<Double>setAge(80.0);
gnClass.<Float>setAge(80.0F);

关于java - 为什么我通过将 Integer 类型参数设置为泛型中的 Integer 变量而出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56164445/

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