Защищенное? методы getSource и getTarget в классе JGraphT DefaultEdge
Методы getSource()
и getTarget()
DefaultEdge на org.jgrapht.graph.DefaultEdge защищены.
Как мне получить доступ к исходным и целевым вершинам каждого из ребер, возвращаемых edgeSet()
org.jgrapht.graph.SimpleGraph?
В приведенном ниже коде показано, что происходит.
import java.util.Set;
import org.jgrapht.UndirectedGraph;
import org.jgrapht.graph.DefaultEdge;
import org.jgrapht.graph.SimpleGraph;
public class TestEdges
{
public static void main(String [] args)
{
UndirectedGraph<String, DefaultEdge> g =
new SimpleGraph<String, DefaultEdge>(DefaultEdge.class);
String A = "A";
String B = "B";
String C = "C";
// add the vertices
g.addVertex(A);
g.addVertex(B);
g.addVertex(C);
g.addEdge(A, B);
g.addEdge(B, C);
g.addEdge(A, C);
Set<DefaultEdge> edges = g.edgeSet();
for(DefaultEdge edge : edges) {
String v1 = edge.getSource(); // Error getSource() is protected method
String v2 = edge.getTarget(); // Error getTarget() is protected method
}
}
}
Ответы
Ответ 1
"Правильный" метод доступа к источникам и целевому объекту ребер в соответствии с списком рассылки JGraphT заключается в использовании метода getEdgeSource(E)
и getEdgeTarget(E)
из интерфейса Interface Graph<V,E>
org.jgrapht
модификация кода тогда
for(DefaultEdge edge : edges) {
String v1 = g.getEdgeSource(edge);
String v2 = g.getEdgeTarget(edge);
}
Ответ 2
У меня возникла аналогичная проблема при попытке извлечь значения ребер и, хотя это не случай OP, может оказаться полезной для всех, кто сталкивается с этой проблемой.
Когда я создал экземпляр своего графа и передал ему класс edge:
DirectedGraph graph = new SimpleDirectedGraph(DefaultEdge.class);
Netbeans предоставил мне возможность импортировать файл DefaultEdge.class, я выбрал неверный. Я использовал org.jgraph библиотеку вместо org.jgrapht.
Если вы используете класс DefaultEdge, убедитесь, что вы используете его из jgrapht.
import org.jgrapht.graph.DefaultEdge;