我正在尝试使用j2objc来翻译一些Java代码。不幸的是,我的代码依赖于反射。 j2objc文档声称支持反射,但是当我尝试导入例如java.lang.reflect.Field
时,我收到一条错误消息,说它无法解析。
如果我尝试导入我知道不支持的类,那就是我得到的相同错误,例如摆动。
支持文档所说的其他类,例如java.util,干净利落地翻译。
在j2objc中是否需要做一些特殊的事情才能启用反射支持?
答案 0 :(得分:4)
java.lang.reflect.Field
(或者至少报告了所有报告的错误)。源是最新的,分发包位于Downloads page。
答案 1 :(得分:1)
根据我的经验,不,不是。如果您查看conversions page,它表示它支持一部分反射功能来支持测试框架。
我正在使用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中运行良好。 我一直试图通过创建一个选择器并从那里调用方法来解决这个问题,但奇怪的是,那也没有用。 (没有崩溃,但也没有返回正确的结果。)