Я создал объект на Java, который называется «Edge». Этот объект является направленным ребром для графа, который хранит ссылку на узел в его начале и узел в его конце.
Эти узлы в настоящее время являются объектами "Вершины", однако я хотел бы также сохранить начало двойного ребра в том же объекте, чтобы он возвращал объект "Лицо". В настоящее время я поддерживаю только возврат вершины, как показано в коде ниже.
public class Edge{
private Vertex org; //this is the line that I want to be able to store a
//face given certain conditions (the index being 1 or 3)
private Face left; //this is a line where I want to store a face normally
//but store a Vertex if this is a dual edge
private int index; //a number from 0-3, where 1 and 3 are in the dual graph
public Vertex Org(){
return org;
}
}
Мне было интересно, существует ли способ определения функции Org () и поля org таким образом, чтобы она могла быть либо гранью, либо вершиной. Мне было интересно, если есть способ использовать универсальные типы, которые могут стать «вершина» или «лицо» в зависимости от параметра индекса. Пример того, что я попробовал, приведен ниже.
public class Edge<T>{
public T org;
private T Org(){
return org;
}
}
Однако это не кажется очень элегантным решением, и оно работает только для получения исходного положения, а не для левой грани / вершины.
Мне было интересно, есть ли способ хранения поля, который может быть одним из двух возможных типов объектов, или другой простой способ обойти эту проблему.