java泛型方法报错,这是为啥?
publicclassResult<T>{privateTdata;public<T>voidtest(Tdata){this.data=data;}为啥静态方法要加<T...
public class Result<T> {
private T data;
public <T> void test(T data){
this.data = data;
}
为啥静态方法要加<T>呢,如下:
public static <T> Result<T> success(T data){
return new Result<>(data);
}} 展开
private T data;
public <T> void test(T data){
this.data = data;
}
为啥静态方法要加<T>呢,如下:
public static <T> Result<T> success(T data){
return new Result<>(data);
}} 展开
3个回答
展开全部
类Result已声明为泛型类,方法如果用到此泛型就不要再次声明了。如果想要声明其他泛型的方法,要把泛型改成其他类型,类似这样:
public <U> void test(U data){
...
}
由于你需要将类里的data赋值,而data的类型是T,所以应该把泛型声明去掉:
public void test(T data){
this.data = data;
}
}
public <U> void test(U data){
...
}
由于你需要将类里的data赋值,而data的类型是T,所以应该把泛型声明去掉:
public void test(T data){
this.data = data;
}
}
追问
public static Result success(T data){
return new Result(data);
}
为啥静态方法要加,普通方法不能加呢
追答
因为静态方法是类级别,而普通方法是对象级别,泛型是用来修饰类里的成员的,因此泛型属于对象级别,所以静态方法要加泛型表明此泛型类型不同于类后面声明的泛型类型,普通方法不加表明用的就是当前类声明的泛型类型
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询