Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > создать объект generic типа


Автор: vvsh 31.1.2012, 22:39
Hi.
есть абстрактный класс GraphRepresent:
Код
public abstract class GraphRepresent {}


и несколько классов
Код
public class AdjacencyMatrix extends GraphRepresent {}
public class IncidenceMatrix extends GraphRepresent {}


есть класс Graph с типом G, который наследуется от GraphRepresent:
Код
public class Graph<G extends GraphRepresent> extends GraphData<G> {    
    G represent;
    
    public Graph(G represent) throws Exception {
        this.represent = represent;
    }
}


для создания объекта приходится писать так
Код
Graph<?> graph = new Graph<AdjacencyMatrix>(new AdjacencyMatrix());


что выглядит очень громодко
есть ли способ создать объект типа G прямо в конструкторе класса Graph?

p.s. это нужно еще для того чтобы запретить изменять объект класса, наследуемого от GraphRepresent. 

Автор: Stolzen 1.2.2012, 08:47
Цитата(vvsh @  31.1.2012,  23:39 Найти цитируемый пост)

что выглядит очень громодко
есть ли способ создать объект типа G прямо в конструкторе класса Graph?

p.s. это нужно еще для того чтобы запретить изменять объект класса, наследуемого от GraphRepresent. 

Есть, попробуйте использовать фабричный метод - создать статик-метод, в котором собирается граф с AdjacencyMatrix внутри. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)