Использование темплейта в Java типа C<A,B extends C>

243
30 января 2018, 10:02

Если имеется Java Класс:

public class DummyTemplate<S, D extends DummyTemplate<S,D>> {
S value;
D next;
public DummyTemplate(S value, D next) {
    super();
    this.value = value;
    this.next = next;
}

    public static DummyTemplate<String, DummyTemplate>  factory(){
    return  new DummyTemplate<String, DummyTemplate>(null, null);
}
}

Ошибка :Bound mismatch: The type DummyTemplate is not a valid substitute for the bounded parameter <D extends DummyTemplate<S,D>> of the type DummyTemplate<S,D> хоть это валидная подмена типа. Где тип D задан для того чтоб factory() точно возвращал тип который нужно: когда создаёшь подкласс, обьявляешь

public class DummyTemplateSubclass<S,  D extends DummyTemplateSubclass<S,D>> extends DummyTemplate<S, D>{ 

Вопрос в том как дать определение типу DummyTemplate<String, DummyTemplate>, если постоянно надо рекурсивно указывать шаблон?

Answer 1
public class DummyTemplate<S> {
    S value;
    DummyTemplate<S> next;
    public DummyTemplate(S value, DummyTemplate<S> next) {
        super();
        this.value = value;
        this.next = next;
    }
    public static DummyTemplate<String> factory() {
        return new DummyTemplate<>(null, null);
    }
}
READ ALSO
Как сгенерировать WSDL файл на Java

Как сгенерировать WSDL файл на Java

Имеется soap веб сервис и его WSDL описание: https://ws**demo

163
Обработка нажатия F1

Обработка нажатия F1

как можно отловить нажатие F1? сейчас сделано вот так, но с функциональными клавишами это не работает

242
Разбить фрейм пополам

Разбить фрейм пополам

Привет! Хочу сделать аналог тотала, для этого нужно расположить 2 панели на фрейме(левый, правый)Делаю с помощью бордерлэйаута(один EAST, другой...

183