概要
KotlinのI/Fにはデフォルト実装を定義できますが、Java側からそのデフォルト実装を利用するにはあらかじめ設定が必要です。
今回はその設定方法を書き記します。
前提
- Maven
- Kotlin 1.35
- Java 1.8
設定方法
①Kotlinのプラグインの設定
pom.xmlのkotlinをcompileさせることを定義している箇所の引数に、-Xjvm-default=compatibility
を追加
例:
pom.xml
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<goals> <goal>compile</goal> </goals>
<configuration>
<sourceDirs>
<sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
<sourceDir>${project.basedir}/src/main/java</sourceDir>
</sourceDirs>
<args>
<arg>-Xjvm-default=compatibility</arg>
</args>
</configuration>
</execution>
<execution>
<id>test-compile</id>
<goals> <goal>test-compile</goal> </goals>
<configuration>
<sourceDirs>
<sourceDir>${project.basedir}/src/test/kotlin</sourceDir>
<sourceDir>${project.basedir}/src/test/java</sourceDir>
</sourceDirs>
<args>
<arg>-Xjvm-default=compatibility</arg>
</args>
</configuration>
</execution>
</executions>
</plugin>
propertiesにjvmTargetを記載
例:
pom.xml
<properties>
<jdk.version>1.8</jdk.version>
<encoding>UTF-8</encoding>
<kotlin.version>1.3.60</kotlin.version>
<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>
</properties>
②Javaにデフォルト実装として認識させたいメソッドに @JvmDefault
アノテーションを付与
以上となります。