java - java中如何绑定(bind)两个类?

标签 java class bind

如何将两个 Java 类绑定(bind)在一起?

我正在编写一个 3D opengl 程序,其中有几个不同的类。我知道如何将类绑定(bind)到主类,但我无法将两个单独的类绑定(bind)在一起。我有一个地形类,其中包含一些有关地形的数据的列表。然后我需要另一个名为Figure 的类中的数据,该类不是主类。我尝试将这些类绑定(bind)在一起,如下所示:

在地形类中我有:

Figure fig;

public void bindClasses(Figure fg) {
   fig = fg;
}

然后在Figure类中我有:

Terrain ter;

public void bindTerrain(Terrain tr) {
   ter = tr;
}

然后在这两个类中我都调用这些函数。这不应该绑定(bind)它们和它们的变量吗?至少这就是我将我的类与主类绑定(bind)的方式。

最佳答案

首先从术语开始。 是一个蓝图,它告诉您如何实例化对象 - 当您编写new Figure()时,您就创建了一个实例,图形一个对象(通常您有一个的多个对象>)。因此,当您在上面“绑定(bind)”时,您实际上并不是在绑定(bind)类,而是在绑定(bind)对象

上面的代码没问题。按照惯例,您经常使用setter编写此类内容,没有必要这样调用它们,但一个非常常见的模式是:

public class Terrain {

    Figure fig

    public void setFigure(Figure fig) {
       this.fig = fig;
    }

}

public class Figure {

    Terrain ter

    public void setTerrain(Terrain ter) {
       this.ter = ter;
    }

}

要将两者关联在一起,您可以在主类中执行此操作,如您所见,这几乎与您已经拥有的完全一样,只需使用常规名称即可。

public void init() {

   Terrain ter = new Terrain();   // create object of class Terrain
   Figure fig = new Figure();     // create object of class Figure

   ter.setFigure(fig);
   fig.setTerrain(ter);

}

例如,如果两个对象之间存在关系,则如果没有地形来放置图形,则无法创建图形。这将使地形几乎“拥有”图形。您可以使用图中的构造函数来指示这一点。

public class Figure {

    Terrain ter

    // constructor requires an instance of Terrain, 
    // since the figure must always be placed in a terrain
    public Figure(Terrain ter) {

       this.ter = ter;

       // let terrain know this is the main figure.
       ter.setFigure(this);          
    }

}

现在您的初始化代码将改为:

public void init() {

   Terrain ter = new Terrain();   // create object of class Terrain
   Figure fig = new Figure(ter);  // create object of class Figure in the terrain

   // no setters needed, since figure constructor sets up
   // the relationship.

}

关于java - java中如何绑定(bind)两个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4331697/

相关文章:

java - 神经元结果有点偏差

java - HandlerInterceptorAdapter 和 Zuul 过滤器

mysql - 将 PDO FETCH_CLASS 与多态类一起使用

c# - 从内部类访问外部类字段

C TCP/IP Echo Server——绑定(bind)和接受函数出错

java - Android ListView 仅显示两项中的一项

java - 在java中读取csv文件从第3行开始

java - 将多个 Java 对象导入到一个类中?

java - 地址重用在新的 Java 运行时环境中不起作用

Python Tkinter : Call function after long press spacebar for 1 second