Lee las fuentes generadas

Asignación de nombre de clase

Como J2ObjC solo traduce clases de Java que no son IU, una aplicación para iOS necesita trabajar directamente con el clases traducidas. Las clases traducidas son clases NSObject-C normales, pero ayuda a comprender cómo se convierten los nombres de archivo de clase, método, parámetro y encabezado.

Java usa paquetes para definir espacios de nombres, mientras que Objective-C no tiene paquetes y, en su lugar, tiene un de colocar un prefijo compartido frente a clases relacionadas (como NSObject y NSString). Para los espacios de nombres de Java, los nombres de los paquetes se asignan a un prefijo con mayúsculas mediales. Por ejemplo: java.util.List se asigna de forma predeterminada a JavaUtilList. Este prefijo predeterminado puede establecerse con las opciones de prefijo del paquete de j2objc.

Nombres de parámetros

Java diferencia los métodos sobrecargados por sus tipos de argumentos, mientras que Objective-C usa argumentos y nombres de usuario. J2ObjC, por lo tanto, crea nombres de argumentos a partir de sus tipos. Por ejemplo, así es como se muestra se inserta al comienzo de una ArrayList y cómo esa lista, luego, se agrega a otra lista:

[someList addWithInt:0 withId:object];
[otherList addAllWithJavaUtilCollection:somelist];

Cada nombre de argumento consiste en "with" además de su tipo. Esto es un poco feo, pero garantiza que la misma siempre se invoca en Objective-C como lo fue con Java.

Nombres de encabezados

Sin embargo, los archivos de encabezado no tienen sus nombres asignados, sino que tienen la ruta del archivo fuente de Java. que termina con ".h" en lugar de “.java”. Esto facilita mucho las herramientas de asistencia, como Xcode y Make pero puede ser un poco confuso al principio, ya que:

#import "java/util/Date.h"

Declara la clase JavaUtilDate, no Date.

Cómo usar clases traducidas

Aparte de los nombres impares (que se pueden simplificar con prefijos de paquetes), las clases traducidas se usan como cualquier otra clase de Objective-C:

#import "java/util/BitSet.h"
...
  JavaUtilBitSet *bitset = [[JavaUtilBitSet alloc] init];
  [bitset setWithInt:10 withBOOL:YES];
  BOOL b = [bitset getWithInt:10];