当前位置:   article > 正文

泛型 <T>T 与 T 的区别_范型方法 有 和没有的区别

范型方法 有 和没有的区别
方法返回前的<T> 是告诉编译器,当前方法的值传入类型可以和类初始化的泛型类型不同,也是就是该方法的泛型类可以自定义,不需要跟类初始化的泛型类相同.
  1. package com.jt.test;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. /**
  5. * @Description
  6. * 有的方法返回值为 <T> T ,有的方法返回值为 T ,区别在那里 ?
  7. **/
  8. public class Request<E> {
  9. public <T> T getObject(Class<T> tClass) throws IllegalAccessException, InstantiationException {
  10. T t = tClass.newInstance();
  11. return t;
  12. }
  13. /**
  14. * 方法返回前的 <T> 是告诉编译器,当前方法的值传入类型可以和类初始化的泛型类型不同,
  15. * 也是就是该方法的泛型类可以自定义,不需要跟类初始化的泛型类相同
  16. *
  17. * 参数 T
  18. * 第一个 表示是泛型
  19. * 第二个 表示是返回是T类型的数据
  20. * 第三个 表示限制参数类型为T
  21. * @param data
  22. * @param <T>
  23. * @return
  24. */
  25. private <T> T getListFirst(List<T> data) {
  26. if (data == null || data.size() == 0) {
  27. return null;
  28. }
  29. return data.get(0);
  30. }
  31. /**
  32. * 这个只能传T类型的数据
  33. * @param data
  34. * @return
  35. */
  36. private E getListFirst2(List<E> data) {
  37. if (data == null || data.size() == 0) {
  38. return null;
  39. }
  40. return data.get(0);
  41. }
  42. public static void main(String[] args) {
  43. List<Integer> data = new ArrayList<>();
  44. List<String> data2 = new ArrayList<>();
  45. // 入参由List<T>的T 决定,因为返回值为<T> T ,所以入参不受 Request<T> 影响
  46. Integer a = new Request<String>().getListFirst(data);
  47. // 编译出错,入参由Request<T> T的决定,受Request<T>影响
  48. //new Request<String>().getListFirst2(data);
  49. // 没什么区别
  50. String aa = new Request<String>().getListFirst(data2);
  51. String bb = new Request<String>().getListFirst2(data2);
  52. }
  53. }

泛型说明

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/932485
推荐阅读
相关标签
  

闽ICP备14008679号