[Work/Class/Java with Processing/kotlin_extention]

Kotlinで書いたクラスをProcessingで使う

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());
}