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;
}