如何在不指定类的情况下使用显式类型参数调用Java方法?

问题描述 投票:2回答:2

以下代码无法编译,因为Java无法推断getSomething的类型参数:

class Example {
  static void callIt() {
    takeString(getSomething());
  }

  static void takeString(String s) {
  }

  static <T> T getSomething() {
    return null;
  }
}

有没有办法指定类型参数,如<String>getSomething(),但没有指定它被调用的类的名称?即不是Example.<String>getSomething()

java generics
2个回答
3
投票

有没有办法指定类型参数,如<String>getSomething(),但没有指定它被调用的类的名称?即不是Example.<String>getSomething()

不,那里没有。 That is the syntax for explicitly providing a type argument to a generic method.

您的代码应该在Java 8上进行编译,具有改进的和有针对性的类型推断。


-1
投票

你为什么不这样做:

static Object getSomething() {return null;}

然后将其转换为字符串:

takeString((String)getSomething());

从你的简短例子可以看出为什么你需要泛型

© www.soinside.com 2019 - 2024. All rights reserved.