0

我已经学习了大约一个半星期的 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

4

1 回答 1

0

那么我正在寻找的是有没有一种方法来定义扩展类 xyz 的类 trans ,这样如果我有例如

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 对象代表相同类型的数学对象,比如一个图。一组例程处理第一种表示,另一组例程只处理图的第二种表示。要在第一个表示上使用第二组例程,我必须从我不想做的第一个表示在内存中重新创建图形。我想使用与第二个表示相同类型的新字段来扩展第一个对象。无需在内存中隐藏图形。

我想最简单和最无意义的练习是定义一个具有两个不同字段的类,这些字段总是相等并相互变化。是否有可能做到这一点?

于 2013-07-31T19:48:19.990 回答