Использование jung2 в плагинах cytoscape
Я занимался Java уже около полутора недель, чтобы писать плагины Cytoscape и использовать jung2 для анализа и манипулирования объектами графа Cytoscape. Есть ли способ расширить объект графа cytoscape, называя его классом xyz, чтобы включить новое поле объекта типа графа jung2, поля и методы которого указывают на соответствующие в cytoscape, не создавая совершенно новый объект в памяти. Не уверен, что у меня есть смысл и смысл, но предположим, например, что у меня было два класса, представляющих один и тот же тип объекта
public class xyz {
public double i;
public xyz(double a) {
i=a;
}
}
public class pqr {
public double j;
public pqr(double b) {
j=b;
}
}
тогда что-то вроде
public class trans extends xyz {
public pqr toPqr;
public trans(double a) {
super(a);
toPqr = new pqr(i);
}
}
где сейчас, если
trans myTrans = new trans(5);
затем myTrans.toPqr.j
указывает на myTrans.i
если я назначу новое значение либо тогда myTrans.i
изменения
и если я изменюсь myTrans.i
тогда это видно в myTrans.toPqr.j
1 ответ
Хорошо, что я ищу, есть ли способ определить класс Trans, который расширяет класс XYZ, так что если у меня есть, например,
public class xyz {
public String r;
public double i;
public xyz(String a, double b) {
r=a;
i=b;
}
}
а также
public class pqr {
public String s;
public double j;
public pqr(String a, double b) {
s=a;
j=b;
}
}
а также
public class trans extends xyz {
public pqr toPqr; //adding a new field of type pqr
trans(xyz myXyz) {
super(myXyz.r, myXyz.i);
//code
}
}
тогда если
xyz xyzA = new xyz("a",8); // constructor for two fields string r and double s
и (переделать?)
xyzA = new trans(xyzA); // trans takes an xyz object as constructor arg
чтобы
((trans)xyzA).toPqr.s всегда равен xyzA.r, где при смене одного изменяется другой ((trans)xyzA).toPqr.j всегда равен xyzA.i, где при смене одного изменяется другой
В основном есть два различных объекта Java, представляющих математический объект одного типа, например, граф. Один пакет процедур имеет дело с первым представлением, а другой набор процедур имеет дело только со вторым представлением графа. Чтобы использовать второй набор подпрограмм в первом представлении, я должен был бы воссоздать граф в памяти из первого представления, которое я не хочу делать. Я хотел бы расширить первый объект новым полем того же типа, что и второе представление. Без слежки за графиком в памяти.
Я предполагаю, что самым простым и самым бессмысленным упражнением будет определение класса с двумя различными полями, которые всегда равны и изменяются друг с другом. Можно ли сделать это?