我正在尝试使用 j2objc 来翻译一些 Java 代码。不幸的是,我的代码依赖于反射。j2objc 文档声称支持反射,但是当我尝试导入 eg 时java.lang.reflect.Field
,我收到一条错误消息,指出无法解析。
如果我尝试导入我知道不支持的类(例如 Swing),也会遇到同样的错误。
支持文档中提到的其他类,例如 java.util,可以干净地翻译。
是否需要做一些特别的事情才能在 j2objc 中启用反射支持?
我正在尝试使用 j2objc 来翻译一些 Java 代码。不幸的是,我的代码依赖于反射。j2objc 文档声称支持反射,但是当我尝试导入 eg 时java.lang.reflect.Field
,我收到一条错误消息,指出无法解析。
如果我尝试导入我知道不支持的类(例如 Swing),也会遇到同样的错误。
支持文档中提到的其他类,例如 java.util,可以干净地翻译。
是否需要做一些特别的事情才能在 j2objc 中启用反射支持?
java.lang.reflect.Field
最近已修复(或至少所有报告的错误都已修复)。源代码是最新的,分发包位于下载页面。
以我的经验,不,它没有。如果您查看转换页面,它会说它支持反射功能的子集以支持测试框架。
我正在使用 j2objc 0.56。如果我尝试调用一个方法:
java.lang.reflect.Method method;
try {
method = biometry.getClass().getMethod(methodName, int.class, double.class);
CalcResult r = (CalcResult) method.invoke(biometry,days, measurement);
return r;
} catch (SecurityException e) {
throw new BiometryException("Security Problem executing " + methodName,e);
} catch (NoSuchMethodException e) {
throw new BiometryException("No such method " + methodName,e);
} catch (IllegalArgumentException e) {
throw new BiometryException("bad argument for " + methodName,e);
} catch (IllegalAccessException e) {
throw new BiometryException("bad access for " + methodName,e);
} catch (InvocationTargetException e) {
throw new BiometryException("bad target for " + methodName,e);
}
我得到一个 JavaNullPointer 异常,但当然,它在我的 Java JUnit 中运行良好。我一直在尝试通过创建一个选择器并从那里调用该方法来解决这个问题,但奇怪的是,这也不起作用。(没有崩溃,但也没有返回正确的结果。)