j2objc真的支持反射吗?

时间:2012-10-05 09:32:13

标签: java objective-c reflection code-translation j2objc

我正在尝试使用j2objc来翻译一些Java代码。不幸的是,我的代码依赖于反射。 j2objc文档声称支持反射,但是当我尝试导入例如java.lang.reflect.Field时,我收到一条错误消息,说它无法解析。

如果我尝试导入我知道不支持的类,那就是我得到的相同错误,例如摆动。

支持文档所说的其他类,例如java.util,干净利落地翻译。

在j2objc中是否需要做一些特殊的事情才能启用反射支持?

2 个答案:

答案 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中运行良好。 我一直试图通过创建一个选择器并从那里调用方法来解决这个问题,但奇怪的是,那也没有用。 (没有崩溃,但也没有返回正确的结果。)