如下所示,方法返回值前面为什么要加上 <T> 呢?

    public  static <T>  void  test(T a){System.out.println(String.format("test %s",a));}

java类对象中如果想使用泛型需要将类定义如下

也就是Class类名后加一个<T>

如果静态方法中想用泛型应当也是要和Class声明类似的,
所以这时候就需要在方法返回值前面加上一个<T>,用于告诉java我这个静态方法定义了一个泛型,
这时候就可以在方法形参或者方法内部使用这个泛型了。

那么此刻还有一个问题,就是静态方法可不可以直接用类上面的泛型呢?
如下所示

public class Test<T> {private T a;public static void test(T a){System.out.println(a);}}

答案是不可以的,此刻编译就会直接出错,
错误是 ‘xxxx.xxx.Xxxx.this’ cannot be referenced from a static context(无法从静态上下文引用),
那么为什么会出现这个问题呢,
笔者认为是Class<T>中的方法是在new一个对象出来的时候指定的,
而静态方法其实不需要new一个对象就可以直接使用,这个时候用Class.静态方法,那么这个泛型到底是什么类型呢?
所以只能用 public static <T> void test 这种方式提前定义好泛型

当然,在类中,非static方法,也是可以定义自己的泛型的,如下所示,
那么按照下面的代码Class已经有一个T泛型了,方法中也有一个T泛型了,这时候到底用的是哪一个呢?
这时候当然是就近原则,用的当然是方法中的T泛型

public class Test<T> {private T a;public <T> T test(String a){return (T)a;}}

Java泛型方法返回值前面为什么要加上T相关推荐

  1. java 接口 返回值_java api返回值的标准化详解

    api返回值的标准化 例如 {"status":200,"message":"操作成功","data":"{\ ...

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

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

  3. java gettext返回值_012-关于EditText中的getText()方法的返回值类型以及string的转换问题(转)...

    EditText中的getText()方法的返回值为CharSequence,如果我们想要获得string类型数据的话,需要在后边加上.toString 另外,String类型转为int:Intege ...

  4. java split 返回值_java中Split函数的使用方法

    1.语法如下 String.split(sourceStr,maxSplit) String.split(sourceStr) 参数说明:sourceStr是被分割的字符串,maxSplit是最大的分 ...

  5. java 内部类 返回值_Java基础第10天+形式参数和返回值的问题、包、导包、权限修饰符、常见的修饰符、内部类(局部内部类,成员内部类,匿名内部类)...

    1:形式参数和返回值的问题(理解) (1)形式参数: 类名:需要该类的对象 抽象类名:需要该类的子类对象 接口名:需要该接口的实现类对象 (2)返回值类型: 类名:返回的是该类的对象 抽象类名:返回的 ...

  6. java compare 返回值_关于Java你不知道的那些事之Java8新特性[Lambda表达式和函数式接口]...

    前言 为什么要用Lambda表达式? Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,将代码像数据一样传递,这样可以写出更简洁.更灵活的代码,作为一个更紧凑的代码风 ...

  7. java exe 返回值_java调用exe返回值

    {// getAccount 方法,使用 get 方法; return accounts.get(index); } } Bank .java: package com.mybank.domain; ...

  8. java try 返回值_JAVA的try... catch finally的return返回值问题

    下面看一个例子(例1),来讲解Java里面中try.catch.finally的处理流程 public class TryCatchFinally { @SuppressWarnings(" ...

  9. java hashcode返回值_Java String hashCode() 使用方法及示例

    Java String hashCode() 使用方法及示例 Java String hashCode()方法返回字符串的哈希码. 字符串hashCode()方法的语法为: string.hashCo ...

最新文章

  1. MySQL案例-多源复制引起的内存泄漏
  2. [BZOJ3329] Xorequ
  3. RPC框架性能基本比较测试
  4. LeetCode 215 数组中的第K个最大元素
  5. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (1) - 特性概述
  6. python函数第一天(day 20)
  7. lib-flexible vue项目(移动端适配)
  8. 计算机专业需要外语口试,计算机专业英语词汇大全,计算机专业必读英语词汇!...
  9. pmp知识点(7)-项目成本管理
  10. 用ReadyBoost加速Windows 7
  11. CPU、核心数、线程数、运行内存、超线程理解
  12. python 方差_使用NumPy介绍期望值,方差和协方差
  13. 阿里云认证攻略,考试注意事项
  14. echarts结合阿里云地图json选择器展示地图
  15. 一键学会三种定位布局,相对定位、绝对定位、固定定位!
  16. 推荐系统领域对比学习和数据增强论文及代码集锦
  17. for 循环语句基本用法及示例
  18. 动物miRNA靶基因本地预测(三)—— 靶基因预测与结果分析
  19. 一些app抓包抓不到数据的问题
  20. C++信号量实现线程间同步,windows使用SetEvent,linux使用sem_t,QT测试

热门文章

  1. 学习Python后,就业能从事哪些方向?
  2. Vultr开启宝塔8888端口教程,手把手教你开启8888端口以及其它端口
  3. echats 柱状图的点击事件及高亮
  4. 从业4-证券投资基金的监管
  5. java将字符串内容转换为字节数组
  6. MySQL数据库实操教程(23)——数据库备份与还原
  7. python秒表游戏代码_Javascript实现秒表计时游戏
  8. Python入门100例(三)
  9. 关于相对熵(KL距离)的理解
  10. IEEE文献免费下载方法