我正在考虑在使用swing的java程序中添加dbus功能,这样脚本就可以用来执行一些功能。
这个东西也必须在windows上运行,而dbus不可用。
所以我正在考虑做以下事情:
dbus.java:
import dbus; //Whatever the module is called
class dbus implements some_interface {
//blah blah
}
dbus_fake.java
class dbus_fake implements some_interface {
//full of empty methods
}
dbus_manager.java
class dbus_manager {
static some_interface get_dbus() {
try {
return new dbus(); //This should fail when loading the class, because the imports are not satisfied.
} except {
return new fake_dbus();
}
}
}
你认为这是个好主意吗?会起作用吗?有更好的方法吗?
依靠构造函数来抛出有点不可靠ClassNotFoundException
不幸的是(尽管它现在可能适合您的用例)。
我会使用加载类Class.forName
为了获得更可靠的行为(同时使用更多 Java 风格的名称;):
class DBusManager {
static SomeInterface getDBus() {
try {
return Class.forName("your.pkg.RealDBus")
.getConstructor()
.newInstance();
} catch(ClassNotFoundException e) {
return new FakeDBus();
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)