接口中的方法级泛型返回类型

时间:2016-01-05 21:02:33

标签: java generics interface

接口(返回类型)中的方法级别泛型是否有意义?他们有用吗?例如: -

public interface ABX { 
    public <T> T fx(String p);
}

我可以像这样简单地制作泛型类级别

public interface ABX<T> { 
    public T fx(String p);
}

是否存在任何我希望泛型在接口/抽象类中的方法级别(对于返回类型)的情况。

1 个答案:

答案 0 :(得分:2)

方法级泛型肯定有实用性。但是你必须以某种方式绑定泛型类型参数,所以通常这样的方法将有一个泛型参数,比如Class,然后返回一个通用值。您的示例不会这样做,因此很难看到泛型类型参数的值。

你可以在整个地方看到它们的例子 - 我遇到的最多的是Jackson数据绑定类ObjectMapper - https://fasterxml.github.io/jackson-databind/javadoc/2.2.0/com/fasterxml/jackson/databind/ObjectMapper.html,例如

<T> T readValue(InputStream is, Class<T> returnType)

所以,这里的值是ObjectMapper 不是一般类型的类,但它允许我绑定任何类(前提是它可以理解类以及如何设置它基于输入的各种属性)。重要的是,对于整个应用程序,您只需要一个ObjectMapper实例,对于您可能需要数据绑定的每种类型的对象都不需要一个实例。