j2objc 无法调用 swift 中 returns JavaIoInputStream 的方法

j2objc Unable to call method that returns JavaIoInputStream in swift

我的一个 java 类 实现了 2 个方法:

public OutputStream getOutputStream(){
    return null;
}

public int getV(){
    return 3;
}

用j2Objc转换后,我尝试在swift中调用那些方法:

func test() {
    let i = ComExampleTestSharedMyClass()
    var v = d.getV()
    var s = d.getOutputStream()
}

实例化和 getV() 编译得很好,但 getOutputStream() 没有 并显示消息:

ComExampleTestSharedMyClass has no member getOutputStream.

在MyClass.h中,我可以看到两种翻译方法:

- (jint)getV;
- (JavaIoOutputStream *)getOutputStream;

明显的区别在于作为 jre_emul 的一部分的返回类型。

出于测试目的,我在 objective-C 中进行了测试(我的第一次尝试!):

#import "Configurator-Bridging-Header.h"

@implementation TestGetOutputStream

- (void) theTest{
    ComExampleTestSharedMyClass* i = [ComExampleTestSharedMyClass alloc];
    [i getOutputStream];
}
@end

它用objective-C编译,所以我能为swift做什么?

好吧,我被编译器消息愚弄了,说 class 没有请求的方法,而实际上,它是方法的 return 类型 那是未知的。

如果我在桥接 header 中添加 #import "OutputStream.h" 就可以了。