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 のものに変換することほどには話していません。

以上のことから、自動変換ツールを学習ツールとして使用することをお勧めします。生成されたコード片が (より複雑になったり、ユーザー インターフェイスを組み込んだりするにつれて) 機能する場合でも、メンテナンスやさらなる開発には適さず、再設計しない場合は再コーディングする必要があることがわかります。繰り返しになりますが、学習ツールとしては非常に便利です。

  • Google J2ObjC
  • java2objc
  • JCGO これは C に変換されます。目的が何かを機能させることであれば、これで十分です。目的が Objective C のすべての素晴らしさを学ぶことである場合は、そうではありません。
于 2013-08-23T16:41:23.560 に答える