java中泛型类中声明的泛型方法出错
我有以下程序java中泛型类中声明的泛型方法出错,java,generics,Java,Generics,我有以下程序 class Generic1<T> { T t1; public Generic1(T t) { this.t1=t; System.out.println(t); } public <T> void set(T t){ this.t1=t; } public T get(){ return this.t1; } } public
class Generic1<T> {
T t1;
public Generic1(T t) {
this.t1=t;
System.out.println(t);
}
public <T> void set(T t){
this.t1=t;
}
public T get(){
return this.t1;
}
}
public class GenericFinal {
public static void main(String args[]){
<some statements..>
}
}
类泛型1{
t1;
公共通用1(T){
这是t1=t;
系统输出打印ln(t);
}
公共无效集(T){
这是t1=t;
}
公共部门得不到{
返回此文件。t1;
}
}
公共类GenericFinal{
公共静态void main(字符串参数[]){
}
}
当我试图编译它时,它抛出以下错误:
java:11:错误:不兼容的类型:T#1无法转换为T#2
这是t1=t;
^
其中T#1,T#2是类型变量:
T#1扩展方法集中声明的对象(T#1)
T#2扩展了类Generic1中声明的对象
1错误
如果我正确理解了错误消息,它会说:在类型变量名(在案例中为:T)在泛型类中是公共的,那么在泛型类中不可能定义泛型方法
有人能证实我在这里是否正确吗
提前谢谢 替换您的方法:
public <T> void set(T t){
this.t1=t;
}
只需将其更改为公共无效集(T){感谢Joban查看我的问题!!如果我将其更改为“公共无效集(T)”,我相信我的方法将不再是泛型的。如果我需要做什么来保持我的方法的泛型呢?请您提出建议。谢谢!!您的方法仍然是泛型的,因为它不知道它将得到什么类型的输入。例如,当您使用泛型类型创建类的对象时,1)Generic1 obj=new Generic1();然后您的方法的行为类似于set(String t)2)Generic1 obj2=new Generic1();然后您的方法的行为类似于set(Integer t)。从技术上讲,它不是一个“泛型方法”,但您想要的不是一个“泛型方法”,而是泛型类中的一个非泛型方法,这就是他所展示的。
public void set(T t) {
this.t1 = t;
}