【问题标题】:Why does this Java method appear to have two return types?为什么这个 Java 方法看起来有两种返回类型?
【发布时间】:2013-02-23 06:48:38
【问题描述】:
public <E extends Foo> List<E> getResult(String s);

Foo 是我自己的班级。

这个方法的返回类型是什么?为什么它似乎有两种返回类型?

【问题讨论】:

  • 它将返回一个List&lt;? extends Foo&gt;
  • @LuiggiMendoza ? 由调用者指定。方法本身别无选择。它可以合法返回的只是一个空的Listnulls、null 中的List,或者抛出异常/不返回。

标签: java methods


【解决方案1】:

不,您没有两种返回类型。您看到的是generic method

 <E extends Foo> --> you are declaring a generic type for your method

 List<E> --> this is your return type

您的方法可以有一个泛型类型E,它是Foo 的子类。你的返回类型是List&lt;Foo or any SubType Of FOO&gt;

【讨论】:

    【解决方案2】:

    返回类型为List&lt;E&gt;。子句&lt;E extends Foo&gt; 不是返回类型;它是一个泛型类型声明,指定特定类型E 必须是Foo(或Foo 的子类)。这是声明泛型方法的标准语法。

    【讨论】:

    • E 可以是Foo 的子类。
    【解决方案3】:

    查看与泛型有关的 Java documentation

    <E extends Foo> // declares the bounds for the generic type `E`
    List<E> // declares the return value
    

    方法的返回类型为List&lt;E&gt;

    【讨论】:

      猜你喜欢
      • 2014-08-17
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 1970-01-01
      • 1970-01-01
      • 2013-04-26
      相关资源
      最近更新 更多