使用相同接口变量的多种类型实现

时间:2015-05-07 20:30:22

标签: java generics

假设我有一个界面:

D-------S--------T-------U-------V--------AB        
H/P/O   O-State O-Zip   D-State D-Zip   AK Zips  
--------    TN  37046   AK  99518   99901  
--------    AK  99613   WA  98663   99928  
--------    AZ  86004   AK  99613   99926  
--------    GA  30507   AK  99518   99835  
--------    AK  99518   NY  13676   99801

然后假设我有多个实现

interface MyInterface <T>;

我可以在不指定类型的情况下重用相同的接口变量吗?

所以说,

public class Imp1 implements MyInterface<Object>
public class Imp2 implements MyInterface<Object2>

反对必须这样做:

MyInterface var1 = new Imp1();
var1 = new Imp2();

或者我必须经常这样做/接受警告吗?

这就是我需要的。

我正在使用硒进行测试自动化。

我有一个表格的界面。这表示获取行的html表。接下来,我有类型方法返回等效的pojo对象。例如,汽车表将返回汽车对象。一个表可以在许多页面上使用,每个不同的页面可以返回不同的pojo对象。

1 个答案:

答案 0 :(得分:1)

对于您的情况,您可以声明如下变量:

MyInterface<Object> var1 = new Imp1();
MyInterface<Object2> var2 = new Imp2();

根本没有必要处理警告。

如果您希望/需要在不提供泛型类型的情况下使用它,那么,使用具有原始类型的界面,您必须接受警告。

无论如何,你可以像这样使用@SupressWarnings来压制警告。

@SupressWarnings("rawtypes")
void foo() {
    MyInterface var1 = new Imp1();
}