泛型<T>Result<T>?

在泛型类Result<T>中,即public class Result<T>{}中有两个相同的方法,为什么第二个方法使用<T> Result<T>作为他的返回值?

*public static Result success(){
 Result result=new Result<>();
}
public static <T> Result<T> success(T data){
Result<T> result=new Result<>(data)
}*

这两个T是一个东西吗

阅读 5.4k
2 个回答

本质上是一样的,因为类型擦除后都是Object,加上范型方便在写代码上的类型检查


public <S> /* 这个S代表一个是可变类型 */
void method(S s) {

}
    
    
public <C extends Exception> /* 
    这个相当于一种声名, 声名这个方法有一个局部范型, 至于叫什么没有限制 
    可以用于方法参数或者异常抛出,类型返回
*/
C method2(C c) throws C {
    if(c instanceof NullPointerException) {
        throw c;
    }
    return c;
}

在方法前面这个 <T> 你可以理解为是声明泛型,Java 里的泛型也是需要声明的,作用在类上的就会在 Class 处声明,作用在方法上的会在定义方法的位置声明。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题