Определив макрос WINVER
, вы отобразите набор функций, относящихся к определенной версии Windows. Например, если вы определите его как #define WINVER 0x0502
, вы не сможете использовать TaskDialog , который доступен только в Windows Vista. Более подробно вы можете прочитать статью Использование заголовков Windows в MSDN.
public class ProcessImpl<EventType1, EventType2> {
...
}
Поскольку ProcessImpl не расширить процесс . Ваш ProcessImpl не является производным от Process, как вы заявляете, этот параметр должен быть.
Вы можете сделать что-то вроде этого:
public abstract class Process<T, S> {
}
public abstract class Resource<T, S extends Process<T, S>> {
S processor;
}
public class ProcessImpl extends Process<EventType1, ProcessImpl> {
}
public class ResourceImpl extends Resource<EventType1, ProcessImpl> {
}
Если вы ограничиваете параметр S
ресурса Resource
процессором, вам также необходимо правильно объявить его в классе ProcessImpl
. Я не знаю, что такое EventType2
, но он должен реализовывать интерфейс процесса. Я предположил, что вы действительно хотите сказать ProcessImpl
.
Я не вижу способа отредактировать исходную версию или прокомментировать полученные ответы без лучшего ответа.
Этот код будет существовать на веб-уровне, тип события2 определен на уровень постоянства и доступен только на уровне ядра, который существует ниже этого уровня.
Так что, к сожалению, без тесной связи, которой я бы хотел избежать, у меня нет доступа к EventType2.
Если вы не хотите, чтобы ваш код зависел от какого-либо существующего пакета, который содержит процесс
, вы также можете ввести новый пакет интерфейса, который не зависит ни от чего в самом нижняя часть иерархии классов. (Если вы, конечно, можете изменить ограничения наследования.)