Takahiro Octopress Blog

-1から始める情弱プログラミング

Kotlinを使ってみよう!(1)

Kotlinを勉強しよう

さて、本日はKotlinを勉強してみたいと思います。
勉強の題材としては、Google Sign-In SDK for Androidを使ってみよう!で取り上げた Google Sign-In SDKによるOAuth2.0認証 にしたいと思います。
その中で筆者が抑えておくべきと思ったところを基礎からメモっていきます。

(KotlinをAndroid Studioに導入する方法は以前書いたAndroid StudioにKotlinを導入しよう!を参照ください。)

では、早速、見ていきましょう。

Kotlinで変数/定数の書き方

最も基本的なことですが、変数/定数の書き方から異なります。

Javaの場合

1
2
private final String TAG = "MainActivity";  // 定数
private GoogleApiClient mGoogleApiClient;    // 変数

Kotlinの場合

1
2
private val TAG:Int = "MainActivity"                   // 定数
private var mGoogleApiClient:GoogleApiClient? = null  // 変数

ポイントは下記です。

  • 定数はvalで変数はvarを使う
  • 定数は、val 定数名:型名 = 値
  • 変数は、var 変数名:型名 = 値
  • 初期値未定の変数は型名の後ろに?をつけて、nullを代入
    これをしないと『Property must be initialized or be abstract』エラーが発生する

Kotlinでのstatic定数の書き方

Kotlinではstaticは使いません。

Javaの場合

1
2
private static final String TAG = "MainActivity";
private static final int RC_SIGN_IN = 9001;

Kotlinの場合

1
2
3
4
companion object {
  val TAG = "MainActivity"
  val RC_SIGN_IN = 9001
}

Kotlinでimplementの書き方

Google Sign-In SDKでOAuth2.0認証をする際に、GoogleApiClient.OnConnectionFailedListenerView.OnClickListenerのインターフェースを継承していました。

Javaの場合

1
2
3
public class MainActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener, View.OnClickListener {
  ...
}

Kotlinの場合

1
2
3
class MainActivity : AppCompatActivity(), GoogleApiClient.OnConnectionFailedListener, View.OnClickListener {
  ...
}

Kotlionではimplementsワードは書かずにextendsしたクラスの後ろに,区切りで書きます。

Kotlinでキャストの書き方

Google Sign-Inを実行するために置いていたボタンをソース上で取り出すときにSignInButtonでキャストしていました。

Javaの場合

1
SignInButton signInButton = (SignInButton) findViewById(R.id.button_sign_in);

Kotlinの場合

1
var signInButton:SignInButton = findViewById(R.id.button_sign_in) as SignInButton

Kotlinではasを使ってキャストします。

KotlinでOverrideの書き方

Javaの場合

1
2
3
4
@Override
protected void onCreate(Bundle savedInstanceState) {
  ...
}

Kotlinの場合

1
2
3
override fun onCreate(savedInstanceState: Bundle?) {
  ...
}

Kotlinでは、@は不要でfunの前に書きます。
(Swiftと違って、funcとは書かないんです。)

Kotlinでメソッドの戻り値の書き方

Javaの場合

1
2
3
4
@Override
public boolean onCreateOptionsMenu(Menu menu) {
  ...
}

Kotlinの場合

1
2
3
override fun onCreateOptionsMenu(menu: Menu): Boolean {
  ...
}

『fun メソッド名(引数名: 引数の型): 戻り値の型』 と書きます。

Kotlinでswitch文の書き方

1
2
3
4
5
6
7
8
@Override
public void onClick(View v) {
  switch (v.getId()) {
      case R.id.button_sign_in:
          signIn();
          break;
  }
}

Kotlinの場合

1
2
3
4
5
6
7
override fun onClick(view:View) {
  when(view.id) {
      R.id.button_sign_in -> {
          signIn()
      }
  }
}

Kotlinではswitchワードを使いません。whenを使います。
case 条件:という書き方が条件 ->になります。

さて、今回気になったのはこんなところです。
これからもどんどんKotlinでの書き方に慣れていきたいと思います。

因みに、今回のソースは、GitHubに上げてあります。
ご自由にお使いください。

Comments