public <T> Test<String,T> setCacheObject(String key,T value){return null;
}
  • 前面的T的声明,跟类后面的 <T> 没有关系。
  • 方法前面的<T>是给这个方法级别指定泛型。

请看示例:

package com.fanx;public class Fruit {public String toString() {return "fruit";}
}
package com.fanx;public class Apple extends Fruit{@Overridepublic String toString() {// TODO Auto-generated method stubreturn "apple";}}
package com.fanx;public class Dog {public String toString() {return "dog";}
}
package com.fanx;public class ClassName<T> {void show_1(T t) {System.out.println("show_1  " + t.toString());}<E> void show_2(E e) {System.out.println("show_2  " + e.toString());}<T> void show_3(T t) {System.out.println("show_3  " + t.toString());}public static void main(String[] args) {ClassName<Fruit> o = new ClassName<Fruit>();//创建一个ClassName实例,限定它的类型为FruitFruit f = new Fruit();Apple a = new Apple();Dog dog = new Dog();System.out.println("-----------------演示一下show_1------------------");o.show_1(f);o.show_1(a);//o.show_1(dog);这是不能编译通过的,因为此时o对象已限定为Fruit类System.out.println("-----------------演示一下show_2-----------------");o.show_2(f);o.show_2(a);o.<Dog>show_2(dog);System.out.println("-----------------演示show_3-------------------");o.show_3(f);o.show_3(a);o.<Dog>show_3(dog);}
}
  • show_2 和 show_3 方法其实是完完全全等效的。意思就是说ClassName中一旦T被指定为Fruit后,那么 show_1 没有前缀<T>的话,该方法中只能是show_1 (Fruit对象)

  • 而你要是有前缀<T><E>的话,那么你就是告诉编译器对它说:这是我新指定的一个类型,跟ClassName<T>类对象中的T没有半毛钱的关系。也就是说这个show_3中的T和show_2中的E是一个效果,也就是你可以把show_3同等程度地理解为<E> void show_3(E e){~~~~~}

从上面我说的看,那就是 这个方法返回值前也加个的话,这个T就代表该方法自己独有的某个类,而不去和类中限定的T产生冲突。

java泛型关于方法返回值前面的T是什么?相关推荐

  1. Java数组作为方法返回值

    // 数组作为方法返回值 一个方法可以有0.1.多个参数:但是只能有0或者1个返回值. 如果希望一个方法当中产生了多个结果数据进行返回, 使用一个数组作为返回值类型即可. 任何数据类型都能作为方法的参 ...

  2. 方法返回值前的泛型作用

    如图所示 摆脱类上面的泛型约束, 如有理解不到位,请多多指教

  3. java泛型 方法返回值带有泛型 <T>

    方法返回值前的<T>的左右是告诉编译器,当前的方法的值传入类型可以和类初始化的泛型类不同,也就是该方法的泛型类可以自定义,不需要跟类初始化的泛型类相同. 转自:https://blog.c ...

  4. java arraylist 方法返回值,Java ArrayList get() 使用方法及示例

    Java ArrayList get() 使用方法及示例 Java ArrayList get()方法返回指定位置存在的元素. get()方法的语法为: arraylist.get(int index ...

  5. Java框架-SpringMVC的应用(json数据交互、控制器方法返回值、文件上传)

    1. 搭建SpringMVC开发环境 1.1 创建项目,添加依赖 <?xml version="1.0" encoding="UTF-8"?> &l ...

  6. JAVA中返回值为字母时_LeetCode#524通过删除字母匹配到字典里最长单词-java中CompareTo方法用法以及Comparator中Compare方法返回值...

    import java.util.Collections; import java.util.Comparator; import java.util.List; /* 524. 通过删除字母匹配到字 ...

  7. java递归函数返回值_Java基础——方法返回值递归

    原标题:Java基础--方法返回值&递归 声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 例题:写一 ...

  8. Java方法返回值类型归纳

    Java方法返回值类型归纳 我们再调用一个方法时,将方法体内产生的一条数据输出到方法体外使用,这条数据我们叫做返回值. 返回值类型分为两大类:第一类,无返回值类型:void.第二类,有返回值类型,返回 ...

  9. java 返回值_Java方法返回值详解

    Java方法返回值详解 每个方法都是为了完成某个特定的功能,例如:登录功能.求和功能等,既然是功能,那么当这个功能完成之后,大多数情况下都会有一个结果的,比如,登录成功了或者失败了(true/fals ...

最新文章

  1. R语言使用aov函数进行双因素方差分析(Two-way factorial ANOVA)、使用HH包中的interaction2wt函数为任何阶的双因素方差分析可视化主效应和交互作用图、箱图显示主效应
  2. 数据挖掘-数据清理过程
  3. Eclipse和MyEclipse自动提示设置
  4. Educational Codeforces Round 114总结
  5. C语言中的struct和union区别
  6. Ubuntu 14.04 文件服务器--samba的安装和配置
  7. FFMpeg的output_example.c例子分析
  8. Android 获得ImageView中Image的绘制大小
  9. C++基础学习9:构造函数和析构函数
  10. 12-13 库存信息管理系统
  11. 专业FTP服务器Rumpus for Mac
  12. python基础教程解压密码_python学习手册视频教程压缩包解压密码?
  13. 工具04:PuTTY的小伙伴PuTTYgen和Plink
  14. 2021字节秋招算法岗面经——抖音推荐
  15. AcWing 303 运输小猫
  16. Springboot定时任务配置及遇到的问题
  17. IOC流程解析-BeanFactory的创建
  18. js 或者vue中for循环去掉最后一个逗号
  19. Tkinter:文本框Entry
  20. 『WPF』TextBox元素过滤键盘输入

热门文章

  1. matlab中字符串连接的方法
  2. excel合并计算_拒绝加班!16个EXCEL必杀公式送给财会人
  3. FinalShell 下载安装
  4. 【虹科方案】各向同性的重要性
  5. Mybatis 注解sql 中使用like 和if 判断关键字
  6. 详解ISA的HTTP过滤功能
  7. 微博数据:如何通过西瓜微数平台使用「微博排行榜」功能?
  8. SpringUtil获取Spring容器对象
  9. Java递归解决“九连环”公式
  10. 4种方法转义字符解决报错FileNotFoundError: [Errno 2] No such file or directory