2014-01-07 2 views
0

Я создал интерфейс, который охватывает все классы с использованием дженериков, однако мне нужны дополнительные методы для одного класса, который реализует этот интерфейс.Использование дополнительных методов при реализации интерфейса

Мне нравится использовать динамическое связывание объявления переменных в качестве интерфейса, а затем инициализировать его с помощью одного из классов. Таким образом, мои методы могут быть намного проще реализовать.

Однако, это делает его сложным с одним. Для того, чтобы попытаться подытожить программу просто, у меня есть интерфейс:

DataType<T> 
{ 
    public T getParameter(); 
    public void setParameter(T value); 
} 

и классы, реализующие этот тип являются:

StringData implements DataType<String> 
IntData implements DataType<Int> 
BooleanData implemets DataType<Boolean> 
DoubleData implements DataType<Double> 

и один я хочу иметь дополнительные методы;

ArrayData implements DataType<ArrayList<DataType>> 

Класс ArrayData содержит ArrayList других DataTypes. Поэтому мне нужны дополнительные методы для добавления, удаления и получения DataType в списке.

Однако эти методы нельзя вызывать при использовании техники динамической привязки выше, потому что не все переменные DataType, поэтому мне было интересно, знает ли кто-нибудь об этом, или о чем-то, что я пропустил. Благодарю.

ответ

1

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

Рассмотрите 2 интерфейса, в которых есть основные операции с данными и операции с списком.

public interface ListDataType extends DataType<List<DataType>> { 
    // list operations 
} 
+0

Ahh хорошая идея, буду ли я иметь возможность сказать: DataType массив = новые ArrayData()? Где у меня есть класс: класс ArrayData реализует ListDataType – Alex

+0

Да, поскольку ListDataType расширяет DataType. –

+0

Ahh, отлично, я забыл, что вы можете расширить интерфейсы! Спасибо!! – Alex

Смежные вопросы