Annotazione ObjectiveCName
Puoi annotare qualsiasi metodo Java con @ObjectiveCName per modificare il nome tradotto di quel metodo e qualsiasi metodo che lo sostituisca. Ad esempio:
@ObjectiveCName("setTimeWithHours:minutes:seconds:")
public void setTime(int hours, int minutes, int seconds) {
...
}
viene tradotto come:
- (void)setTimeWithHours:(jint)hours
minutes:(jint)minutes
seconds:(jint)seconds;
File di mapping
I nomi dei metodi possono essere modificati utilizzando il flag --mapping, che accetta un file delle proprietà con la proprietà mapping da usare. Ogni mappatura dei metodi viene definita con la firma completa del metodo Java per la chiave e un valore del selettore Objective-C. Ad esempio, la riga per mappare Object.equals() a NSObject.isEqual: è:
java.lang.Object.equals(Ljava/lang/Object;)Z = isEqual:
La dichiarazione di sinistra è la firma completa del metodo, come definita dalla Java Virtual Machine Specifiche. A destra la definizione della mano è composta dal selettore iOS (ossia ciò che passeresti a @selector()). Il metodo e la relativa mappatura devono avere lo stesso numero di parametri.
Come ulteriore esempio, questa riga è equivalente all'esempio della sezione precedente:
pkg.ClassName.setTime(III)V = setTimeWithHours:minutes:seconds:
È possibile specificare altri file di mapping dalla riga di comando, utilizzando l'opzione --mapping.