LoginSignup
3
3

More than 5 years have passed since last update.

【Android】【Kotlin】Kotlinとretrolambdaは併用できないっぽい。

Posted at

何の記事?

既存のAndroidアプリの一部にKotlinを導入しようとしたらコンパイルエラーが出てしまった問題について。

結論

retrolambdaとKotlinを併用するとコンパイルエラーが出る。

実際のコード

Kotlinで書かれたデータクラス

HogeClass.kt
package hoge.myapplication

data class HogeClass(var name: String = "俺だよ俺俺。") {
}

上記クラスを呼び出すJavaで書かれたMainActivity

MainActivity.java
package hoge.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import hoge.myapplication.Test.HogeClass;

public class MainActivity extends AppCompatActivity {

    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        HogeClass hoge = new HogeClass();
        tv = (TextView) findViewById(R.id.main_tv);
        tv.setText(hoge.getName());
    }
}

で、コンパイルすると

Error:(15, 9) エラー: シンボルを見つけられません
シンボル:   クラス HogeClass
場所: クラス MainActivity
Error:(15, 30) エラー: シンボルを見つけられません
シンボル:   クラス HogeClass
場所: クラス MainActivity

こんなエラーが出る。

どうやら、retrolambdaを使うとこのエラーが出るようだ。
retrolambdaをbuild.gradleのplug-inから削除したら治った。

併用する方法があるのかもしれないけど、
ラムダ式使うならKotlinで書けやってことなのかもしれない。

retrolambdaを使っている既存プロジェクトにKotlinを導入すると、
既存のラムダ式を全て改修する必要が出てくる可能性があるのでよく検討したほうがいいかも。

3
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3