質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

1回答

1750閲覧

Java → Kotlin

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2017/03/31 01:02

android studioで開発中のアプリをConvert Java File to Kotlin Fileで変換したところうまく動かなくなりました。
エラーが発生しているのはRetrofitで使うデータクラスの部分です。
Parcelableはプラグインを使って作成しました。

Java

1public class Word implements Parcelable { 2//一部抜粋 3 @Expose 4 private Integer id; 5 @Expose 6 private String keyword; 7 @Expose 8 private Integer type; 9 @Expose 10 private Integer level; 11 @Expose 12 private String summary; 13 @Expose 14 private String description; 15 @Expose 16 private boolean nonfiction; 17 @Expose 18 private boolean fiction; 19 20 21//Getter, Setterは省略 22 23 @Override 24 public int describeContents() { 25 return 0; 26 } 27 28 @Override 29 public void writeToParcel(Parcel dest, int flags) { 30 dest.writeValue(this.id); 31 dest.writeString(this.keyword); 32 dest.writeValue(this.type); 33 dest.writeValue(this.level); 34 dest.writeString(this.summary); 35 dest.writeString(this.description); 36 dest.writeByte(this.nonfiction ? (byte) 1 : (byte) 0); 37 dest.writeByte(this.fiction ? (byte) 1 : (byte) 0); 38 } 39 40 public Word() { 41 } 42 43 protected Word(Parcel in) { 44 this.id = (Integer) in.readValue(Integer.class.getClassLoader()); 45 this.keyword = in.readString(); 46 this.type = (Integer) in.readValue(Integer.class.getClassLoader()); 47 this.level = (Integer) in.readValue(Integer.class.getClassLoader()); 48 this.summary = in.readString(); 49 this.description = in.readString(); 50 this.nonfiction = in.readByte() != 0; 51 this.fiction = in.readByte() != 0; 52 } 53 54 public static final Creator<Word> CREATOR = new Creator<Word>() { 55 @Override 56 public Word createFromParcel(Parcel source) { 57 return new Word(source); 58 } 59 60 @Override 61 public Word[] newArray(int size) { 62 return new Word[size]; 63 } 64 }; 65}

これをConvert Java File to Kotlin Fileで変換すると赤波線が出ます。
上記のコードをKotlinで記述するにはどうすればいいのか教えてください。
変換後のコードは下記。

Kotlin

1//Kotlin 2class Word : Parcelable { 3 @Expose 4 var id: Int? = null 5 @Expose 6 var keyword: String? = null 7 @Expose 8 var type: Int? = null 9 @Expose 10 var level: Int? = null 11 @Expose 12 var summary: String? = null 13 @Expose 14 var description: String? = null 15 @Expose 16 var isNonfiction: Boolean = false 17 @Expose 18 var isFiction: Boolean = false 19 20 override fun describeContents(): Int { 21 return 0 22 } 23 24 override fun writeToParcel(dest: Parcel, flags: Int) { 25 dest.writeValue(this.id) 26 dest.writeString(this.keyword) 27 dest.writeValue(this.type) 28 dest.writeValue(this.level) 29 dest.writeString(this.summary) 30 dest.writeString(this.description) 31 dest.writeByte(if (this.isNonfiction) 1.toByte() else 0.toByte()) 32 dest.writeByte(if (this.isFiction) 1.toByte() else 0.toByte()) 33 } 34 35 constructor() {} 36 37 protected constructor(`in`: Parcel) { 38 this.id = `in`.readValue(Int::class.java.classLoader) as Int 39 this.keyword = `in`.readString() 40 this.type = `in`.readValue(Int::class.java.classLoader) as Int 41 this.level = `in`.readValue(Int::class.java.classLoader) as Int 42 this.summary = `in`.readString() 43 this.description = `in`.readString() 44 this.isNonfiction = `in`.readByte().toInt() != 0 45 this.isFiction = `in`.readByte().toInt() != 0 46 } 47 companion object { 48 49 @JvmField 50 val CREATOR: Parcelable.Creator<Word> = object : Parcelable.Creator<Word> { 51 override fun createFromParcel(source: Parcel): Word { 52 return Word(source) 53 } 54 override fun newArray(size: Int): Array<Word?> { 55 return arrayOfNulls(size) 56 } 57 } 58 } 59}

エラーメッセージ
Caused by: android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called CREATOR on class com.example.myapplication.Word
意味が分からなかったらすみません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

何に困っているのでしょうか?

手元の環境で確認しましたが

  1. 上部のJavaコードを「Convert Java File to Kotlin File」で変換しても下部のKotlinコードにはなりません。
  2. 下部のKotlinコードはコンパイルエラーになりません(文法的に正しいです)
  3. BadParcelableException起こらなさそう。。

ご確認ください。

投稿2017/03/31 01:46

taro

総合スコア82

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/03/31 02:42

一から書き直して「Convert Java File to Kotlin File」で変換すると動くようになりました。 ご迷惑をおかけして申し訳ありませんでした。 ありがとうございました。また機会がありましたらよろしくお願いいたします。
taro

2017/03/31 02:43

????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問