美文网首页
Java基础001:<T> T的含义

Java基础001:<T> T的含义

作者: mr_franklin | 来源:发表于2017-02-28 13:32 被阅读744次

在读java源代码的时候,我们经常会看到类似这样的定义:

// 摘自RestTemplate.java
public <T> T getForObject(String url, Class<T> responseType, Object... urlVariables) throws RestClientException

那么这个<T> T是什么含义呢?
第二个T很好理解,表示返回值类型;
而第一个<T>的作用是声明这个方法是个泛型方法
看javadoc的关于泛型方法的解释:

Generic methods are methods that introduce their own type parameters. This is similar to declaring a generic type, but the type parameter's scope is limited to the method where it is declared. Static and non-static generic methods are allowed, as well as generic class constructors.

大概含义是,泛型方法声明了本方法含有类型参数(比如T)。

有个好方法帮助理解,把这个<T>去掉,会发生什么呢?

Paste_Image.png

会报找不到T的定义的错误!
原来,编译器并不会识别这个T是泛型类型的占位符,还可能有其他的类名也叫TT并不是保留字,没人规定不可以)!
这个<T>就会告诉编译器,现在声明T是一个范型类型的占位符,而不是其他东东(比如类名)!

现在是不是恍然大悟了呢?

再回想下我们平时经常写的带有泛型的类:

class Base<T> {}

这里的<T>, 作用也一样,声明T是个泛型类型的占位符。这么定义的类,叫做泛型类

类比下c++关于模板的定义:

template< typename T>
void T get(T a);

java的这个<T>就相当于template<template T>,只是理解起来没有那么直观~

相关文章

  • Java基础001:<T> T的含义

    在读java源代码的时候,我们经常会看到类似这样的定义: 那么这个 T是什么含义呢?第二个T很好理解,表示返...

  • Java 泛型 <? extends T>和<

    大概来讲: 是"上界通配符" 是"下界通配符" 1. 为什么要用...

  • FactoryBean<T>

    FactoryBean 接口中定义了三个方法 T getObject()boolean isSingleton()...

  • 简述<T> 与 <?>

    引 jdk1.5以后引入了泛型的概念,即:<>,规定了集合中元素类型比如下面代码: 总而言之就是,泛型规范了集合的...

  • 理解<? extends T>,<? supe

    :存储的是T或者T的子类 那么根就是T了(上限),由于存储的是T/T子类,所以具体的类型...

  • Java中类型参数“<T>”和无界通配符“<?

    首先要区分开两种不同的场景: 声明一个泛型类或泛型方法类型参数“”主要用于第一种,声明泛型类或泛型方法 使用...

  • Java 泛型 <? super T> 中 supe

    Java 泛型 中 super 怎么 理解?与 extends 有何不同? super只能...

  • guava Optional<T>

    若T类型数据可以为null,Optional是用来以非空值替代T数据类型的一种方法。一个Optional对象...

  • java.lang.Class<T>类源码解读

    Class类是什么? Class是一个类,位于java.lang包下。在Java中每个类都有一个相对应的Class...

  • 快速理解<? extends T>和<? su

    在 Java 泛型中存在通配符的概念: :上界通配符(Upper Bounds Wild...

网友评论

      本文标题:Java基础001:<T> T的含义

      本文链接:https://www.haomeiwen.com/subject/qfsxgttx.html