java - 不同类型接口(interface)的两种实现——这不可能吗?

标签 java generics methods types interface

我有一个这样的界面:

 interface Transformer { 
     public String transform( List<Object> elements );
 }

实现:

 class XMLTransformer implements Transformer{ 
     public String transform( List<MyXMLElements> elements );
 }

 class TXTTransformer implements Transformer { 
     public String transform( List<MyTXTElements> elements );
 }

但请注意,MyXMLElements 和 MyTXTElements 没有共同的父级。这些是完全不同的对象。

在界面中也试过这个:

    public String transform( List<? extends Object> elements );
    public String transform( List<?> elements );
    public String transform( List<T extends Object> elements );
    public String transform( List<T> elements );

有什么办法可以实现吗?

最佳答案

这应该可以通过泛型实现——为您的接口(interface)声明一个泛型类型参数:

interface Transformer<T> { 
    public String transform( List<T> elements );
}

然后你的实现类只需要使用实际的类名来代替接口(interface)上的泛型类型参数:

class XMLTransformer implements Transformer<MyXmlElements>{ 
   public String transform( List<MyXMLElements> elements ) {}
}

class TXTTransformer implements Transformer<MyTXTElements> { 
   public String transform( List<MyTXTElements> elements ) {}
}

关于java - 不同类型接口(interface)的两种实现——这不可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17661321/

相关文章:

java - 能否在 JNLP 应用程序中以编程方式启用 "Java console"窗口

java - Tesseract 3.02.02 崩溃 JRE

java - 与实现Iterable相关的对象类型有哪些

javascript - Highcharts "Cannot read property ' toFront' 未定义”

java - 使 JScrollPane 自动向下滚动

java - Guice MapBinder : How to bind map<String, Hashset> 在Guice 中使用providesIntoSet?

c# - 如何使用泛型在 C# 中将类型静态绑定(bind)在一起(如 TypeToType<T>)?

java - 方法重载无法按 Java 泛型的预期工作

java - 将方法中的数据类型应用于主测试器类中的变量时出错

python - 在 Python 3 中检测类(不是实例)中的绑定(bind)方法