调用对象中的方法?

时间:2012-01-23 16:04:50

标签: java

我对Java中的对象有点新意,我很感激一些帮助。我希望我能解释一下我的情况。我有一个类,我称之为GUI4EX,来处理程序GUI。在这个类中,我还有创建GUI4EX实例的主方法:

GUI4EX frame = new GUI4EX();

也是类CustomHandler的一个实例,但这不是在main方法中完成的:

CustomHandler customHandler = new CustomHandler();

从GUI4EX里面的代码我调用customHandler中的方法,如下所示:CustomHandler.getSomeValue()。如果我想从CustomHandler类中获取GUI4EX中的方法怎么样?这可能,我该怎么办?希望我的问题不清楚!谢谢!

2 个答案:

答案 0 :(得分:1)

您必须了解面向对象编程的一个重要方面:方法属于对象。当您知道要调用其方法的对象时,您只能调用方法。

在您的示例中,CustomHandler必须知道要在其上调用方法的特定GUI4EX对象。一种可能性是在构造函数中添加一个参数:

class CustomHandler {   
  private GUI4EX frame;

  public CustomHandler(GUI4EX theFrame) {
    frame = theFrame;
  }
}

然后,您可以访问字段frame以调用GUI方法。

但请注意,您将创建一个循环关系。这意味着两个类 - CustomHandlerGUI4EX都相互依赖。这可能会导致问题并导致代码设计错误。如果可以,请尝试避免这种依赖。


*还有静态方法,但使用频率较低。

答案 1 :(得分:1)

你需要建立你的阶级关系。如果我理解正确的话,那么:

  • GUI4EX有一个CustomHandler实例作为类成员
  • 但是使用默认构造函数构造CustomHandler而不传递GUI4EX引用

虽然它不是一个非常好的设计,但你可以将GUI4EX的引用传递给CustomHandler;无论是在构造函数中还是在像这样的setter方法中:

class CustomHandler {
   GUI4EX gui;
   // your rest of class members
   public void setGui(GUI4EX gui) {
      this.gui = gui;
   }
   // your rest of methods
}

然后在GUI4EX类的某个方法中,传递GUI4EX的引用:

customHandler.setGui ( this );
相关问题