本帖最后由 lmooml 于 2012-02-07 13:03:14 编辑

解决方案 »

  1.   

    不知道通过构造函数加载不同DLL,产生不同对象的方式,是否可行?
      

  2.   

    DeviceInterface 定义成接口,然后用两个实现类,每一个类加载各自的动态库
      

  3.   

    看J2SE的代码里面一般这样写:
    static{
        System.loadLibrary(jniDLL);
    }说明JNI native方法和Java方法签名的链接绑定是类级完成的,不是对象级的。要使不同对象上装载不同的lib,然后绑定它,最后调用不同的native方法,这个做不到。
    你可以使用继承,写个抽象类,包含抽象方法open方法,然后定义两个子类,实现这个方法,方法前加上native关键字就行了。或者另一个方法:把设备名称作为String型参数加入到native函数的参数列表中。