我正在考虑将dbus函数添加到使用swing的java程序中,因此脚本可用于执行某些功能.这个东西也必须在windows上运行,dbus不可用.
所以我想做以下事情:
dbus.java:
import dbus; //Whatever the module is called
class dbus implements some_interface {
//blah blah
}
Run Code Online (Sandbox Code Playgroud)
dbus_fake.java
class dbus_fake implements some_interface {
//full of empty methods
}
Run Code Online (Sandbox Code Playgroud)
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
你认为这是个好主意吗?会有用吗?有没有更好的方法呢?
ClassNotFoundException不幸的是,依赖构造函数抛出s 有点不可靠(尽管它现在可能适用于您的用例).
我使用Class.forName更加可靠的行为来加载类(同时使用更多的Java-ish名称;):
class DBusManager {
static SomeInterface getDBus() {
try {
return Class.forName("your.pkg.RealDBus")
.getConstructor()
.newInstance();
} catch(ClassNotFoundException e) {
return new FakeDBus();
}
}
}
Run Code Online (Sandbox Code Playgroud)