Во-первых, в этом сценарии лучше использовать переменные доступа типа «защищенный», а не по умолчанию (т. Е. Сделать его защищенным в классе Graph и защищенным или менее ограничительным в EntityGraphClass).
Затем выможете набрать ваш класс Graph, например:
class Graph<T> {
protected LinkedList<T> vertices;
}
, затем выполнить
class EntityGraph extends Graph<Entity> {
//no longer needed
//LinkedList<Entity> vertices;
}
, и вы получите реализацию класса Graph (в классе EntityGraph), которая имеет Listтипов сущностей;
Если сущность расширяет узел, и вы хотите, чтобы элементы в списке были как минимум типа узла, вы можете сделать:
class Graph<T extends Node> {
protected LinkedList<T> vertices;
}