8

我正在尝试将 Java 代码转换为 Objective-C。下面的类是TestCodeRequest的扩展。想知道如何将其转换为目标 C 等效项。我发现它有点令人困惑,因为 Java 是静态类型的,并且配置优于约定。而 Objective-C 是动态类型的,并且约定优于配置。我在下面有一个示例代码。任何小提示都应该非常棒。

package com.TestCode.api;

import java.io.IOException;

import oauth.signpost.exception.OAuthCommunicationException;
import oauth.signpost.exception.OAuthExpectationFailedException;
import oauth.signpost.exception.OAuthMessageSignerException;

import org.json.JSONObject;

public class Categories extends TestCodeRequest {

    public Categories(String apiKey, String apiSecret) {
            super(apiKey, apiSecret, "categories");
    }

    public Categories field(Object... fields) {
        super.field(fields);
        return this;
    }

    public JSONObject getCategories() throws OAuthMessageSignerException, OAuthExpectationFailedException, OAuthCommunicationException, IOException {
        return this.get();
    }

    public Categories categoriesField(Object... fields) {
        return this.field(fields);
    }

}
4

1 回答 1

16

有几个很好的 Java 到 Objective C 的翻译器。对于这么简单的代码,它们都应该可以工作。翻译人员通常遇到很多麻烦的地方是翻译对运行时库的调用,因为它们的理念不同(尤其是在外观和用户交互领域)。要做好这方面的工作,他们需要从语法回到语义,而这对于软件来说是极其困难的。

您的短语“Java 是静态类型的,配置优于约定。而 Objective-C 是动态类型的,约定优于配置”不能不提到这一点。特别是 GUI 开发。语言的这一方面不是它们固有的,而是属于开发人员通常使用的库,在许多情况下依赖于特定的操作系统。因此,我们谈论将 Java 转换为 Objective C 可能不像从 Swing 外观和交互模式转换为 iOS 那样多。

综合考虑,我建议您使用自动转换工具作为学习工具。您将看到生成的代码片段(因为它们变得更加复杂和/或包含用户界面)即使它们工作,也不适合维护或进一步开发,并且如果不重新设计则需要重新编码。但同样,作为学习工具,它们非常有用。

  • 谷歌 J2ObjC
  • java2objc
  • JCGO 这个转换为 C。如果目的是让某些东西工作,这可能就足够了。如果目的是学习目标 C 的所有辉煌,则不是。
于 2013-08-23T16:41:23.560 回答