我想知道是否有一种简单的方法可以在Java中使用相同的对象实例。
我有一个MySerial
类,用于通过串口通信(我使用的是RXTX库,但它与问题无关)。
我们假设:
我希望GUI中使用的MySerial
的相同实例与Performer
类中使用的相同。问题是Performer
和GUI彼此不了解:就像它们是两个独立的程序一样,所以我不能只将MySerial
传递给构造函数。
我尝试使用SingleTon和ClassLoader,但没有一个工作。
有什么建议吗?
答案 0 :(得分:2)
尽管Singleton模式可以解决您的问题 - 但这不是您经常使用的东西(不惜一切代价避免它)。 为什么不简单地将引用发送给对象?如果它太难了,您可能会遇到一些架构问题。修复架构 - 不要避免单例模式的问题,否则你会发现自己陷入了很多混乱!
答案 1 :(得分:0)
似乎单身模式就是你所需要的。它实现起来相当简单,不应该出问题(根据你描述的内容)例如:
public class MySingleton {
private static MySingleton instance;
private MySingleton() {}
public static MySingleton getInstance() {
if (instance == null)
instance = new MySingleton();
return instance;
}
private String s = "hello";
public String getString() {
return s;
}
}
来自GUI / Performer:
String someString = MySingleton.getInstance().getString();
答案 2 :(得分:0)
如果每个实例都有自己的JVM
(Windows中 TaskManager 中的一个java.exe
),则无法共享MySerial
的同一个实例。您需要在相同的流程两个应用程序中使用 init 。您可以使用enum
o Singleton
。
public class Main {
enum MySerial { ... }
public static void main(String... args) {
Performer.main(args);
GUI.main(args);
}
}