Kotlin

Intercepter

この記事は Intercepterを使用して、コントローラーの処理の前後に任意の処理を実行する方法を書く。 なお、REST APIを想定して書いている。 GETメソッドの作成 以下のような単純なエンドポイントを用意する。 import org.springframework.http.ResponseEnti…

fold()を使って連続した時間をひとつの時間量オブジェクトにまとめる

問題 例えばこう言ったクラスがある場合に、 data class Duration( val start: LocalTime, val end: LocalTime ) { override fun toString(): String { return "$start - $end" } fun isContinuousFrom(from: Duration): Boolean { return from.end.plusMinu…

ResponseEntityでの各HTTPステータスレスポンス作成方法

はじめに 本記事では、Springで提供されているResponseEntityを使用したレスポンス作成方法について記述します。 主にHTTPステータス200系(成功)と、400・500系(エラー)の取り扱い方法です。 (個人的によく使うものだけです。悪しからず) ResponseEnti…

2つのArrayからMapを生成する

結論 zipとtoMapを使用することで簡単にできます。 val names = arrayOf("one", "two", "three") val nums = arrayOf(1, 2, 3) val nameAndNums = names.zip(nums).toMap() println(nameAndNums) // {one=1, two=2, three=3} zipは、List<Pair<T, R>を返却するメソッド</pair<t,>…

Converter<S, T>を使用してリクエストパラメータを任意の型に変換する

Springのコントローラが受け取る引数は基本的にあらかじめ決められた型のものしか受け付けません。 (Stringなど) そのため、パラメータでオリジナルの型として受け取りたい場合はConverter<K, T>を使用するといいでしょう。 例えば以下のようなコントローラのメ</k,>…

ラムダ

ラムダの書き方や注意点を学びます。 はじめに ラムダは、リストの操作等でよく使用されることが多いため、リストに対しての操作を例にとって解説していきます。以下は、リストに格納するPersonオブジェクトです。 名前、年齢、性別を表すプロパティを持つ、…

拡張

Kotlinの拡張について。 拡張とは ある既存のクラスに新しくメソッドやプロパティなどを定義する方法です。 拡張関数 fun main(args: Array<String>) { //拡張関数の例:既存のIntクラスにisOddメソッドを追加する fun Int.isOdd(): Boolean = (this % 2 != 0) 5.isO</string>…

data class

Kotlinのデータクラスです。 はじめのまとめ Kotlinに、値を表すクラスを作成する際に便利な機能のひとつとして、data classがあります。 data classを用いると、そのclassにはコンパイラ側で以下の3つのメソッドが実装されます。 1. toString 2. equals 3. …

初めましてKotlin

はじめに Kotlinの基本的な文法等を学びます。 取り扱っていないトピックも多々あるかと思いますが、最低限持っていたい知識をまとめました。 また、所々Javaとの比較も織り交ぜております。 はじめに Hello, World! 変数 関数 分岐と繰り返し 分岐 if when …