#いいとこまとめ
です。リファレンスとかはググればいくらでも出てくるからね。
とりあえず1時間実際書いてみて、他の言語と比べていいなと思ったとこを列挙。
しばらく使って続編も書きます。
あといまいちなとこまとめもそのうち。
*Kotlin導入編はこちら
#基本構文
SwiftっぽいからSwiftやってた人は入りやすいのでは。
#セミコロン
Swift書いてて、セミコロンつけないのに慣れたから楽。
#型推論
やっぱ楽ちんね。
Java
// 変数
private String value = "Hello";
// 定数
private static final String VALUE = "Hello";
Kotlin
// 変数
private var value = "Hello"
// 定数
private val value = "Hello"
#インターフェース
Javaと違ってデフォルト実装持てる。素敵。
インターフェースを実装した抽象クラスとかもう書かなくていいんだね!
OnBackPressedListener.java
interface OnBackPressedListener {
// NG
boolean onBackPressed() {
}
}
OnBackPressedListener.kt
interface OnBackPressedListener {
// OK
fun onBackPressed(): Boolean {
return true
}
}
#継承系
Javaと違ってextendsとかimplementsとか書かなくていい。素敵。
HogeFragment.Java
class HogeFragment extends Fragment implements OnBackPressedListener {
}
HogeFragment.kt
class HogeFragment : Fragment(), OnBackPressedListener {
}
openで継承できるメソッドを限定できる。overrideするときに@Overrideアノテーションじゃなくなった。素敵。
Java
public class Hoge {
public void Hello() {
Log.d("Hoge", "Hello");
}
}
public class Fuga extends Hoge {
@Override
public void Hello() {
Log.d("Fuga", "Hello")
}
}
Kotlin
public class Hoge {
open fun Hello() {
Log.d("Hoge", "Hello");
}
public fun Hello2() {
Log.d("Hoge", "Hello2");
}
}
public class Fuga : Hoge() {
// OK
override fun Hello() {
Log.d("Fuga", "Hello");
}
// NG
override fun Hello2() {
Log.d("Fuga", "Hello2");
}
}
#プロパティ
もうgetValue()とか書かなくていい!素敵!
Java
public int getValue() {
return mValue;
}
public void setValue(int value) {
mValue = value;
}
private int mValue = 0;
Kotlin
public var value: Int
get() = mValue
set(value) {
mValue = value
}
private var mValue = 0
今日はここらへんで