Оператор == всегда предназначен для сравнения ссылок на объекты, тогда как метод сравнения строк .equals () переопределяется для сравнения содержимого:
String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1 == s2); // It prints false (reference comparison)
System.out.println(s1.equals(s2)); // It prints true (content comparison)
import org.hidetake.gradle.swagger.generator.GenerateSwaggerCode
// plugins, repositories are same, but note import above ^^^
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
implementation ("io.swagger:swagger-annotations:1.5.21")
"swaggerCodegen"("io.swagger:swagger-codegen-cli:2.3.1") // 1
// Use JUnit test framework
testImplementation ("junit:junit:4.12")
}
swaggerSources {
create("petstore").apply { // 2
setInputFile(file("petstore.yaml")) // 3
code(closureOf<GenerateSwaggerCode> { // 4
language = "spring"
})
}
}
1 - динамически разрешенная конфигурация в Kotlin выглядит следующим образом (динамически из Groovy, поэтому использовать ее во время компиляции проблематично, оператор вызова расширения для String - наш спаситель);
2 - swaggerSources
возвращает вас NamedDomainObjectContainer<SwaggerSource>
, поэтому для добавления нового контейнера мы вызываем create
с его именем в качестве параметра;
3 - Kotlin не так гибок, как Groovy, поэтому вызывает setter вместо поля установки; [ 117]
4 - Закрытие Groovy далеко от функционального интерфейса, поэтому мы указываем универсальный тип, так как в источниках плагина Closure
нет параметризации.