假设我有一个名为 Object 的类和一个名为 ObjectCreator 的线程,用于管理对象的创建。为简单起见,Object 具有属性:objectNumber 和 objectName。
如果我要创建一个名为 instance 的 Object 实例,它将由 ObjectCreator 持有。现在假设我需要另一个线程(我们称之为 ObjectChanger)来查看和操作实例;将实例变成静态对象有意义吗?
我已经设法通过将实例设为静态来查看结果,所以现在我可以执行以下操作:
ObjectCreator.instance.getName();
其中 getName() 是 Object 的一个方法。从我从类似问题的答案中读到的内容来看,静态事物是邪恶的,并且总是有解决方法。我读过的一个建议是将实例作为其构造函数的参数传递给 ObjectChanger,但是如果在我需要创建 ObjectChanger 时尚未创建实例怎么办?
也许这个问题更多的是关于 OOP 概念而不是多线程,或者它可能是重复的,所以请原谅我,但我在这里很迷茫。
编辑:为了解决弗兰基和吉姆的建议,这里有一些代码片段:
目的:
类对象
{
private String objectName = "Something";
private int objectNumber = 1;
public synchronized void changeNumber(int newNumber)
{
objectNumber = newNumber;
}
}
对象创建者:
class ObjectCreator extends Thread
{
static Object instance;
public ObjectCreator (Object something)
{
instance = something;
}
static void createObject()
{
...
}
static Object getObject()
{
return instance;
}
}
对象转换器:
public class ObjectChanger extends Thread
{
private Object currentInstance = null;
private int instanceNumber = null;
public void run()
{
currentInstance = ObjectCreator.getObject(); //If I were to make getObject() non-static, this line churns up an error
instanceNumber = currentInstance.getObjectNumber();
currentInstance.changeNumber(2); //valid?
}
}