对泛型有点混乱

时间:2014-03-17 09:54:56

标签: java generics

我开始阅读一些关于Java中泛型的文章,有一件事让我困惑:

public static <t> T getFirst(List<T> list)

“此方法将接受对List的引用,并将返回T类型的对象。”

很酷,但是<t>做了什么(小写一个,静态之后)?我尝试过但没能理解......

2 个答案:

答案 0 :(得分:6)

应该是:

public static <T> T getFirst(List<T> list)
  • 那么,<T>是什么意思?

    这意味着此方法的范围有一个名为<T>的类型。该方法还将返回该类型T的实例。

  • 如何使用?

    如果您传递List<String>,则该方法应返回列表中的第一个String

    如果您传递List<Integer>该方法,则应返回列表中的第一个Integer

  • 支持此类方法的重点是什么?

    • 根据List

    • 中对象的类型,您不必使用不同签名的重载方法
    • 例如,您不必担心该方法将返回除列表中对象类型之外的其他类型,这样可以减轻可能的转换负担。

答案 1 :(得分:1)

也许这样可以理解:

public static <T> T getFirst(T something)

简而言之,当您调用方法时,类型 T 将是稍后给出的参数:

String text = "text";
getfirst(text);

现在编译器会知道所有 T 在这里都是String