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

时间:2015-02-05 16:53:38

标签: java generics

以下代码无法编译,因为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()

2 个答案:

答案 0 :(得分:3)

  

是否有某种方法可以指定类型参数   <String>getSomething(),但未指定类的名称   它被召唤?即不是Example.<String>getSomething()

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

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

答案 1 :(得分:-1)

你为什么不这样做:

static Object getSomething() {return null;}

然后将其转换为字符串:

takeString((String)getSomething());

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