0

我们有简单的初始化: 示例:

Class1
{
  public Class1
  {
   Class2 object = new Class2();
  }

   public SomeMethod(String anyString)
    {...}
}

那么从 Class2 调用 Class1 中的 SomeMethod 并传递“anyString”值的最佳方法是什么?现在我正在使用自定义事件和界面。但也许有更好、更合理的方法来做到这一点?

4

3 回答 3

2

但也许有更好、更合理的方法来做到这一点?

是的。

Class1
{
    public Class1()
    {
        Class2 object = new Class2(this);
    }

   public SomeMethod(String anyString)
   {...}
}

Class2
{
    public Class2(Class1 parent)
    {
         parent.SomeMethod("A String value");
    }
}

解释

只需将父对象的一个​​实例传递给子类。子类可以直接调用所需的方法。

Java 命名约定

约定规定方法以小写字母开头。

SomeMethod -> someMethod
于 2013-05-02T15:51:19.677 回答
0

虽然这是可怕的循环,但您尝试做的事情应该如下完成:

public Class1
{
  public void setClass2(Class2 instance2)
  {
    instance2.setClass1(this);
  }

  public someMethod(String anyString)
  {
    ...
  }
}

public class Class2
{  
  public void setClass1(Class1 instance1)
  {
    instance1.someMethod("the string");
  }
}

正如我在@Chris Cooney 的回答中的评论中所说:

从构造函数中发布 this 是一个坏主意,因为引用是在对象完全初始化之前分配的 -这里有详细解释。

于 2013-05-02T16:15:49.727 回答
0

我认为传递this给构造函数中的另一个方法可能很危险。以下页面有很好的解释。

http://www.ibm.com/developerworks/java/library/j-jtp0618/index.html

请参阅“在构建过程中不要发布“this”引用”部分。

如果可能的话,你可以推迟Class2施工,直到第一次需要它Class1

于 2013-05-02T16:12:02.227 回答