我们有简单的初始化: 示例:
Class1
{
public Class1
{
Class2 object = new Class2();
}
public SomeMethod(String anyString)
{...}
}
那么从 Class2 调用 Class1 中的 SomeMethod 并传递“anyString”值的最佳方法是什么?现在我正在使用自定义事件和界面。但也许有更好、更合理的方法来做到这一点?
但也许有更好、更合理的方法来做到这一点?
是的。
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
虽然这是可怕的循环,但您尝试做的事情应该如下完成:
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 是一个坏主意,因为引用是在对象完全初始化之前分配的 -这里有详细解释。
我认为传递this
给构造函数中的另一个方法可能很危险。以下页面有很好的解释。
http://www.ibm.com/developerworks/java/library/j-jtp0618/index.html
请参阅“在构建过程中不要发布“this”引用”部分。
如果可能的话,你可以推迟Class2
施工,直到第一次需要它Class1