Kotlinでのクラスの定義
正直Javaは書くにはめんどくさい手順が多すぎるので,メインの記述はKotlinでクラスを定義しその中で行い,Javaはそのクラスをインスタンス化して走らせるだけにすると楽そう.
Kotlinのコード
Processingで扱うにはパッケージをちゃんと定義しておく必要がある.
// testPackage/testPackage.kt
package testPackage // Define My Package Name
open class PrintingPerson constructor(val firstName: String, val lastName: String, var age: Int){
// Primary Constructor
init {
age++
println("This is init section")
}
// Secondary Constructor
constructor(age: Int)
:this("Gombe", "Nanashi", age){
println("This is in secondary consstructor")
}
// Define Instance Method
fun printName(): String{
return "$firstName $lastName, Age: $age"
}
}
// Main function for Making Runtime Jar
fun main(args: Array){
val person1 = PrintingPerson("Hekamaku", "Ekte", 23)
val person2 = PrintingPerson(43)
println(person1.printName())
println(person2.printName())
}
パッケージなので,このソースコードファイル"testPackage.kt"はtestPackageフォルダに入っている必要がある.(つまり,現在のフォルダから見てtestPackage/testPackage.kt
)その状態で,
$ kotlinc -d testPackage.jar -include-runtime testPackage/testPackage.kt
でコンパイルするとできるtestPackage.jar
を,
macOSの場合,
~/Documents/Processing/libraries/testPackage/libarary/testPackage.jar
に配置する.
Processingのコード
この状態で,Processing側ではすでにこのクラスを使えるようになっているので,以下のように普通のクラスとして使うことができる.
import testPackage.*;
void setup(){
// プライマリコンストラクタを呼び出す
PrintingPerson person1 = new PrintingPerson("Tokamaku", "Hemare", 38);
// セカンダリコンストラクタを呼び出す
PrintingPerson person2 = new PrintingPerson(21);
// インタンスメソッドを呼び出す
System.out.println(person1.printName());
System.out.println(person2.printName());
}