2013-08-23 2 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

Есть несколько хороших переводчиков Java на Objective C. Для кода , что простой, все они должны работать. Там, где у переводчиков, как правило, много проблем, это перевод вызовов в библиотеки времени выполнения из-за их расходящихся философий (особенно в области внешнего вида и взаимодействия с пользователем). Чтобы сделать хорошую работу здесь, им нужно перейти от синтаксиса к семантике, и это очень сложно для программного обеспечения.

Ваша фраза «Java статически типизирована и конфигурируется по соглашению. В то время как Objective-C динамически типизируется, а условная конфигурация» не может не ссылаться на это. В частности, разработка графического интерфейса. Этот аспект языков не является для них неотъемлемой частью, но принадлежит к библиотекам, которые обычно используют разработчики, во многих случаях зависящими от конкретных операционных систем. Таким образом, мы, вероятно, не столько говорим о преобразовании Java в Objective C, сколько о преобразовании из стиля Swing и способа взаимодействия в iOS.

Все рассмотренные, я бы рекомендовал использовать инструменты автоматического преобразования в качестве обучающих инструментов. Вы увидите, что сгенерированные фрагменты кода (поскольку они становятся более сложными и/или включают пользовательские интерфейсы), даже если они работают, не подходят для обслуживания или дальнейшего развития и требуют повторной кодировки, если они не переработаны. Но опять же, как инструменты обучения, они очень полезны.

  • Google J2ObjC
  • java2objc
  • JCGO Это один превращается в С. Если цель состоит в том, чтобы иметь что-то работает, это может быть достаточно хорошим. Нет, если цель состоит в том, чтобы изучить Objective C во всем его блеске.
+0

Отличный ответ на очень расплывчатый вопрос. (Проголосовал) –

+0

Цель C имеет блеск? – noelicus

Смежные вопросы