2013-08-23 61 views
6

我在嘗試將Java代碼轉換爲Objective-C。下面的類是 TestCodeRequest的擴展。想知道如何將其轉換爲客觀的C等價物。我發現它有點令人困惑,因爲Java是靜態類型的,並且配置超過了慣例。 Objective-C是動態輸入的,而慣例是配置。我有一個示例代碼如下。任何小提示都應該非常棒。將Java轉換爲目標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); 
    } 

} 

回答

11

目標C轉換器有幾個很好的Java語言。代碼簡單,他們都應該工作。譯者通常會遇到很多麻煩,因爲他們的理念不同(特別是在外觀和用戶交互方面),因此將調用轉換爲運行時庫。爲了在這裏做好工作,他們需要從語法回到語義,這對軟件來說是非常困難的。

您的短語「Java是靜態類型的,並且配置超出約定。而Objective-C是動態類型的,並且約定優於配置」不能不指代這一點。具體的GUI開發。這些語言不是固有的,而是屬於開發人員通常使用的庫,在很多情況下依賴於特定的操作系統。所以,我們可能不會談論將Java轉換爲Objective C,而是將Swing的外觀和交互模式轉換爲iOS模式。

所有的考慮,我建議你使用自動轉換工具作爲學習工具。你會看到,即使它們工作,生成的代碼片段(因爲它們變得更加複雜和/或包含用戶界面)不適合維護或進一步開發,並且如果不進行重新設計,則需要重新編碼。但是,再次,作爲學習工具,它們非常有用。

  • Google J2ObjC
  • java2objc
  • JCGO這一個轉換成C.如果目的是爲了有一些工作,這可能是不夠好。如果目的是要全面學習Objective C,那就不是了。
+0

非常模糊的問題的絕佳答案。 (投票) –

+0

客觀C有着輝煌嗎? – noelicus