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" 就可以了。
我的一个 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" 就可以了。