スポンサーリンク

【Kotlin】google.api.client.http.HttpResponse.parseAsの例外unable to create new instance of class xx because it has no accessible default constructor

スポンサーリンク

原因

KotlinのDataクラスではdefault constructorが生成されないのが原因です。

対策

一般に言われている対策は以下

  • Data classにデフォルトバリューを付与して、すべてvarにする
  • Data classにconstructorを作成する

ただ、自分が利用しているgoogle.api.client.http.HttpResponse.parseAsではこれをしてもうまく働かなかったので、以下の対策を行いました。

response = request.execute()
dto = Gson().fromJson(response.parseAsString(), dtoClazz)

Gson()を用いて変換を行います。

本来GsonFactoryをHttpTransportに与えているので必要ないはずなのですが、仕方ないですね。Kotlinとの互換性が悪いということにしておきます。

タイトルとURLをコピーしました