Наследование и шаблоны
От: dron_ru  
Дата: 25.02.05 12:08
Оценка:
Ситуация такая:
class A <T>{
}

class B extends A {
    public void foo(T t){   //*
         ...
    }
}


*: здесь T — параметризация суперкласса. Вопрос: как это правильно записать (приведённый пример не компилируется)?
Re: Наследование и шаблоны
От: dshe  
Дата: 25.02.05 16:50
Оценка:
Здравствуйте, dron_ru, Вы писали:

_>Ситуация такая:

_>
_>class A <T>{
_>}

_>class B extends A {
_>    public void foo(T t){   //*
_>         ...
_>    }
_>}
_>


_>*: здесь T — параметризация суперкласса. Вопрос: как это правильно записать (приведённый пример не компилируется)?


Может
class B<T> extends A<T> {
    public void foo(T t){
         ...
    }
}

или
class B extends A<Object> {
    public void foo(Object t){
         ...
    }
}

?
--
Дмитро
Re[2]: Наследование и шаблоны
От: dron_ru  
Дата: 28.02.05 08:55
Оценка:
D>Может
D>
D>class B<T> extends A<T> {
D>    public void foo(T t){
D>         ...
D>    }
D>}
D>

D>?
Точно! Спасибо, просто у меня в коде было совсем некорректно и идея ругалась почти на любое напиcание (умная, сволочь!). Если интересно, было так:
public interface Node<NodeType extends Node> {
    void addChild(NodeType node);
}
public interface IterableNode<NodeType> extends Node<NodeType>{    // *

}


*вот здесь она ругается. Хотя мне кажется, что всё достаточно логично: выбрали параметризацию-наследника Node и захотели использовать её везде. Ругаться перестала вот после такого написания (когда я явно указал параметризацию у наследуемого интерфейса):
public interface IterableNode<NodeType extends Node> extends Node<NodeType>{

}


PS Java начинает меня всё больше восхищать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.