Java:通过ID调用类
我有一个类“Class1”,它实现了Observer,并包含如下线程:
class Class1 implements Observer {
String id = null;
Object lockObject = new Object();
public Class1(String id) {
this.id = id;
theThread.start();
}
public void update(Observable arg0, Object arg1) {
lockObject.notify();
}
Thread theThread = new Thread() {
public void run() {
while(true) {
lockObject.wait();
printID();
}
}
};
public void printID() {
System.out.println( /*the ID of this class*/ + " was called");
}
}
另一个是“Class2”,它扩展了可观察性,并称为第一类:
class Class2 extends Observable {
public Class2() {
addObserver("ID_THREAD_ONE"); //Though it takes a class as parameter
setChanged();
notifyObservers();
}
}
public class Main {
public static void main(String[]args) {
new Class1("ID_THREAD_ONE");
new Class2();
}
}
当然,代码不会工作,因为方法addObserver()
将类的对象作为参数(在本例中是Class1
的对象)。
但我想知道是否有办法让addObserver方法通过预先定义的“类id”添加类的对象
我知道这样做会更容易:addObserver(new Class1())
,但由于某些原因我不能这样做(这也是为什么我需要使用id的原因)
感谢您的回答
干杯
朱利安
# 1 楼答案
您可能需要指定为什么需要ID。如果它们被用于某种映射,我想它们可以保持原样
至于实际的观察者/可观察者,因为你的两个类都是从主类实例化的,我认为这就是你想要的:
在
Class2
中,必须在构造函数中包含Class1
实例然后,在
Main
中,只需在Class2
构造函数中传递Class1
实例,如下所示:"someID"
只是为了防止你需要它来做其他事情,但除此之外,不需要在观察者中使用ID