問題タブ [auto-value]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - AutoValue POJO での firebase ServerValue.TIMESTAMP の保存
タイムスタンプの DataSnapshot.getValue() で Android チャットがクラッシュする
POJO にタイムスタンプ プロパティを追加しようとしています。上記の解決策は、アプリケーションによって使用される実際のデータ メンバーを無視するように jackson に指示します。AutoValue を使用していますが、クラスに注釈を付けて動作させる方法がわかりません。
カスタムシリアライザーを使用してみました:
しかし、タイムスタンプを生成する代わりに文字列date: "{.sv=timestamp}"をfirebaseに書き込んだ
java - Print auto-value object as Java source code
I often find myself wanting to copy a living java object into my tests (in the source code). I doubt this is generally doable, but perhaps a asJavaSourceCode() method could be generated for all @AutoValue objects?
Here is some code to demonstrate what I want.
When running this I get.
I would consider any of these a valid answer to this question:
- "Yes, here's a library link"
- "No, it doesn't exist yet"
- "Somebody else did something similar."
- "That is bad practice, don't do it, see Effective Java Book Item XYZ"
java - @AutoValue が Intellij 2016.1.3 で機能しない
Google の @AutoValue を使用しようとしました。しかし、Intellij では動作しません。
Step.1このクラスになりました
それから
Step.2は、このコードを build.gradle に入力しました
Step.3 AutoValue プラグインをインストールしました。
しかし、Javaコンパイラは私にこのエラーを与えます:
java - Androidでfirebase 9.2で自動値を使用する方法
firebase 9.2.0+で自動値を使用したい。次のコードがあります。
しかし、これを呼び出すと、次のOffice office = childDataSnapshot.getValue(Office.class);エラーが発生します。
このエラーが発生する理由と解決方法を知っている人はいますか? jacksonfirebase がjson シリアライゼーションに使用されなくなったことを読みました。@JsonProperty("latitud")そのため、使用@PropertyNameに失敗した種類を指定する方法がわかりません。
また、抽象メソッドの名前を次のようpublic abstract double getLatitud();に変更しようとしましたが、その後、エラーは次のようになります:
したがって、これを解決する方法がわかりません。
解決
hatboysamとFrank van Puffelenのおかげで、最終的に次の解決策でこの問題に直面することができました。
- hatboysam の回答とFrank van Puffelen のコメントに基づいて、Firebase のオブジェクトをシリアル化および逆シリアル化するための 2 つのメソッドを持つFirebaseUtil 列挙型を作成しました。
Userテスト用にいくつかのPhoneクラスを作成します。依存関係:
/li>使用例:
/li>
android - Java モジュールでの Android Studio Autovalue と Android モジュールでの使用
Android Studio を使用すると、Android モジュールと Java モジュールがあります。Java モジュールでは、AutoValue を使用して不変クラスを生成したいと考えています。
すべて正常に動作しているように見えます (ファイルは Java モジュールで生成されます) が、Android プロジェクトでこれらのファイルにアクセスできません。助言がありますか?
app\build.gradle
ドメイン\build.gradle
ドメイン/MyLocation.java
ドメイン モジュール (Java モジュール) をビルドすると、「AutoValue_MyLocation」ファイルが次の場所に生成されることがわかります。
ただし、生成されたクラスを Android モジュールのどこでも使用できません。
java - gson で AutoValue 拡張機能を使用してセッターを追加する方法
最近、AutoValues (GSON) 拡張機能を使用して JSON データの解析を高速化するという概念に出会いました。実際、json を 2 倍の速さで解析できることがわかりました。
AutoValues を使用している間のデータ セットは不変ですが、多くの場合、データ セット/モデルは json に似ており、マッパーは必要ありません。
したがって、モデルクラスに個々のデータ要素を設定したい場合、これは実現可能ではないように見えます(抽象ゲッターしかなく、セッターがないためです。この問題を回避する方法はありますか、それともポイントがありませんか。サンプルコードを使用して説明しますAutoValue を使用した同様の構文です。
したがって、通常は次のようなコードを記述します
ただし、自動値を使用している間、モデル クラスの構造は次のように変更されます。
// ご覧のように、AutoValueModel 構造にはセッターが含まれていません (AutoValues の背後にある基本的な前提は不変であることがわかっているにもかかわらず、ユーザー アクションなどに基づいて) bValue だけを変更し、引き続き使用したい場合はどうでしょうかコードの他の部分で。次に、まったく同じ AutoValueModel を使用して json をシリアル化します。または、AutoValue 手法を使用して逆シリアル化してから、データセットを変更できるマップされたモデルを使用する必要がありますか? (この手法を使用すると、AutoValue を使用して得られた速度の利点が失われますか?)
また、 AutoValues について学んだ場所からの参照:
java - GSON、AutoValue、Retrofit 2 で代替名を逆シリアル化できない
JSON を pojo にデシリアライズするために、レトロフィット バージョン 2.1.0 を使用しています。pojo のフィールドは、json で異なる名前で受け取ることができます。フィールドを正しくデシリアライズするために、@serializedName アノテーションを次のように使用しました。
しかし、何らかの理由で、結果の JSON にキー「タイトル」の下にフィールドがある場合、Gson は正しく読み取りますが、フィールドが「名前」キーに関連付けられている場合は読み取られません。
逆シリアル化中に GSON に代替名を認識させるにはどうすればよいですか?
android - Retrofit と autovalue を使用してプロパティを初期化する
GSON拡張機能でRetrofitとAutoValueを使用しています。すべて正常に動作しますが、サーバーが値を返さない場合にプロパティを初期化する方法が見つかりませんでした。NPE を回避するために注釈 @Nullable を追加できますが、null を回避し、json に設定されていないプロパティのデフォルト値を設定できるようにしたいと考えています。
gson 拡張機能を使用せずにビルダーを使用してプロパティを設定する方法は知っていますが、拡張機能を使用してデフォルト値を設定するときにこれらのビルダー (またはその他の手段) を使用する方法がわかりません。