Я нашел следующие решения этой проблемы с помощью плагина для обработки аннотации Lombok во время компиляции.
Мне пришлось выполнить следующие шаги в build.gradle:
1) Добавить id "net.ltgt.apt" version "0.15"
в раздел плагинов.
2) Добавить maven { url 'https://projectlombok.org/edge-releases' }
в раздел репозиториев.
3) Добавьте следующее в раздел зависимостей:
compileOnly 'org.projectlombok:lombok:edge-SNAPSHOT'
apt 'org.projectlombok:lombok:edge-SNAPSHOT'
compileOnly 'org.projectlombok:lombok:1.18:6'
annotationProcessor 'org.projectlombok:lombok:1.18:6'
4) Добавьте задачу:
tasks.withType(JavaCompile) {
options.annotationProcessorPath = configurations.apt
}
Это позволит успешно завершить сборку.
Обновление от 29.03.2009: Этот обходной путь также работает с Gradle 5.3, Java JDK 10
Спасибо.
Objective C не имеет названных параметров, таким образом, все на левой стороне двоеточия - часть имени метода. Например,
getBusStops: forTime:
название метода. Имя разбито так, это может быть более описательным. Вы могли просто назвать свой метод
getBusStops: :
но это не говорит Вам очень о втором параметре.
Необходимо разграничить каждое название параметра с a ":" по крайней мере. Технически имя является дополнительным, но оно рекомендуется для удобочитаемости. Таким образом, Вы могли записать:
- (NSMutableArray*)getBusStops:(NSString*)busStop :(NSSTimeInterval*)timeInterval;
или что Вы предложили:
- (NSMutableArray*)getBusStops:(NSString*)busStop forTime:(NSSTimeInterval*)timeInterval;
Да; синтаксис метода Objective C похож на это по нескольким причинам; один из них - то, так, чтобы было ясно, каковы параметры, которые Вы указываете. Например, если Вы добавляете объект к NSMutableArray
в определенном индексе Вы сделали бы это с помощью метода:
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
Этот метод называют insertObject:atIndex:
и ясно, что объект вставляется в указанном индексе.
На практике, добавляя строку "Привет, Мир!" в индексе 5 NSMutableArray
названный array
был бы назван следующим образом:
NSString *obj = @"Hello, World!";
int index = 5;
[array insertObject:obj atIndex:index];
Это также уменьшает неоднозначность между порядком параметров метода, гарантируя, чтобы Вы передали параметр объекта сначала, затем индексный параметр. Это становится более полезным при использовании функций, которые берут большое количество аргументов, и уменьшает ошибку мимоходом аргументы.
Кроме того, соглашение о присвоении имен метода - такой, потому что Objective C не поддерживает перегрузку; однако, если Вы хотите записать метод, который делает то же задание, но берет различные типы данных, это может быть выполнено; возьмите, например, NSNumber
класс; это имеет несколько методов создания объекта, включая:
+ (id)numberWithBool:(BOOL)value;
+ (id)numberWithFloat:(float)value;
+ (id)numberWithDouble:(double)value;
На языке, таком как C++, Вы просто перегрузили бы метод числа, чтобы позволить различным типам данных быть переданными как аргумент; однако, в Objective C, этот синтаксис позволяет нескольким различным вариантам той же функции быть реализованными, меняя имя метода для каждого варианта функции.
Текст перед каждым параметром является частью имени метода. От Вашего примера название метода на самом деле
-getBusStops:forTime:
Каждый: представляет аргумент. В вызове метода имя метода разделяется в :s и аргументы появляются после :s. например.
[getBusStops: arg1 forTime: arg2]