2015-05-07 2 views
1

Предположим, что у меня есть интерфейс:Несколько Реализации типа, используя ту же переменную интерфейса

interface MyInterface <T>; 

тогда предположим, у меня есть несколько реализаций

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

Можно ли использовать ту же переменную интерфейс без указания типа?

так сказать,

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

противиться к тому, чтобы сделать это:

MyInterface var1<?> = new Imp1(); 

Или я всегда должен делать/жить с этим предупреждением?

Вот что мне нужно.

Я использую селен для автоматизации тестирования.

У меня есть интерфейс, который является таблицей. Что представляет собой таблицу html для получения строк. Затем у меня есть методы типа, которые возвращают эквивалентный объект pojo. Например, таблица автомобилей вернет объект автомобилей. Одна таблица может использоваться на многих страницах, и каждая другая страница может возвращать другой объект pojo.

+1

Какова цель повторного использования этой переменной? Чтобы запутать редактор кода? –

+0

обновил мой вопрос, чтобы включить мой фактический прецедент. – CodyK

+0

Хорошо, я вижу, но если вы не знаете определенного типа во время компиляции (если POJO - автомобиль или трактор или что-то еще), вы не можете избежать необходимости запоминать класс POJO и использовать его в качестве аргумента в методах, которые обрабатывают его (например, в 'switch', где вы будете отбрасывать его в определенный класс). –

ответ

1

В вашем случае, вы можете объявить переменные, как это:

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

И нет никакой необходимости иметь дело WTH предупреждения на всех.

Если вы хотите/должны использовать его, не предоставляя общий тип, это, используя интерфейс с сырым типом, тогда вы должны жить с предупреждением.

В любом случае, вы можете подавить предупреждение, используя @SupressWarnings вот так.

@SupressWarnings("rawtypes") 
void foo() { 
    MyInterface var1 = new Imp1(); 
} 
Смежные вопросы