从函数返回通用对象

时间:2019-04-08 12:37:12

标签: java generics casting type-parameter

我正在编写一个用于向我们的服务中添加指标的函数,并且我希望使其通用,以便可以用于不同类型的指标。我不想进行任何怪异的转换,所以我想到了使该函数具有通用性:

set_directory_properties()

但是,由于“不兼容的类型”,它不起作用,我觉得这很奇怪。 它声明它需要public <T extends Metric> T addMetric(String key, Function<MetricRegistry, T> metricProducer) { MetricRegistry registry = SharedMetricRegistries.tryGetDefault(); Metric m = metricProducer.apply(registry); registry.register(key, m); return m; } ,但是在返回时找到T,但是根据类型参数,Metric是否还没有定义为T

1 个答案:

答案 0 :(得分:2)

更改

<td class="comment-text">([^<]+)<\/td>

收件人

public <T extends Metric> T addMetric(String key,
        Function<MetricRegistry, T> metricProducer)

或更改

public <T extends Metric> Metric addMetric(String key,Function<MetricRegistry, T> metricProducer)

收件人

Metric m = metricProducer.apply(registry);

两者都可以。