java - 用接口(interface)推断泛型 - java

标签 java generics

我有以下界面:

public interface Evaluator<T> {
    T evaluate(Collection<Extractable> sample);
 }

还有一个实现该接口(interface)的类:

public class PrecisionEvaluator implements Evaluator<Map<Triple<Short, Integer, String>, AttributePrecisionBean>> {

@Override
public Map<Triple<Short, Integer, String>, AttributePrecisionBean> evaluate(Collection<Extractable> sample){
    ...

所以上面的用法是:

Evaluator<Map<Triple<Short, Integer, String>, AttributePrecisionBean>> eval = new PrecisionEvaluator();

有没有办法让接口(interface) Evaluator 隐式返回在实现它的类中定义的泛型类型?这样用法就是:

Evaluator eval = new PrecisionEvaluator();

或者是否有更简洁的方法来解决这个问题?

最佳答案

是的,有一种方法可以做到:学习 Scala,它的语法比 Java 简单得多,这要归功于编译器类型推断等其他原因。

更严重的是,如果你使用Evaluator,你不能用Java做得更好单独它将被编译为 Evaluator<Object> ,这将不允许您拥有类型安全和多态性。您在这里所能做的就是创建一个类 class CustomTriple extends Triple<Short,Integer,String>>有更短的东西。

关于java - 用接口(interface)推断泛型 - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26673716/

相关文章:

typescript - 了解 TypeScript 中的通用约束扩展

java - 线程间通信的并行搜索

Java Object[] 强制转换为 long[][] 性能问题?

scala - 在Scala中调用基于模板类型的方法

Java 泛型 : Generic type defined as return type only

c# - C# 中的泛型编译错误(但在 VB.NET 中有效)

java - 为什么我收到 JVM 最大堆空间错误?

Java - 获取对象的大小

java - 在 Windows 上使用 Java 代替 pngcrush 优化 iPhone 的 PNG 格式

c++ - 参数化 typedef 可能吗?