1

同じクラスで AutoValue と ActiveAndroid (または Ollie) の両方を使用しようとした人はいますか?

現在、ActiveAndroid というライブラリを使用してデータを sqlite データベースに保存しようとしています。ライブラリは、メンバー変数ごとにアノテーション @Column を追加して構成されます。問題は、同じクラスで ActiveAndroid と AutoValue を使用していることです。AutoValue では、apt がメンバー変数を作成してくれるので、メンバー変数を追加することは想定していません。@Column アノテーションがまだ存在しないため、メンバー変数に追加できないため、これは問題を引き起こします。そのため、誰かがこの問題に遭遇したのか、それに対する回避策があるのか​​ どうか疑問に思っていました.

4

1 に答える 1

0

あなたが指摘した正確な理由により、これは AutoValue では機能しません。ActiveAndroid はライブラリを更新して、標準のプロパティ セッター/ゲッターで動作するようにすることができますが、現在、@Columnアノテーションはメソッドではなくフィールドにのみ適用できます。

モデルオブジェクトが抽象Modelクラスをサブクラス化しなければならないという問題もあります。これにより問題が発生することはありませんが、実装がかなり混乱します。

Square などの素敵な人々による SQLDelightをチェックしてみてください。ActiveAndroid スタイルの create-sqlite-from-java-objects アプローチとは対照的に、逆の create-java-objects-from-sql を使用します。それが利点か欠点かはあなた次第ですが、非常にうまく機能し、AutoValue とうまく連携します。

于 2016-03-24T21:19:18.820 に答える