問題タブ [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.

0 投票する
1 に答える
641 参照

android - AutoValue POJO での firebase ServerValue.TIMESTAMP の保存

タイムスタンプの DataSnapshot.getValue() で Android チャットがクラッシュする

POJO にタイムスタンプ プロパティを追加しようとしています。上記の解決策は、アプリケーションによって使用される実際のデータ メンバーを無視するように jackson に指示します。AutoValue を使用していますが、クラスに注釈を付けて動作させる方法がわかりません。

カスタムシリアライザーを使用してみました:

しかし、タイムスタンプを生成する代わりに文字列date: "{.sv=timestamp}"をfirebaseに書き込んだ

0 投票する
1 に答える
132 参照

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"
0 投票する
0 に答える
3588 参照

java - @AutoValue が Intellij 2016.1.3 で機能しない

Google の @AutoValue を使用しようとしました。しかし、Intellij では動作しません。

Step.1このクラスになりました

それから

Step.2は、このコードを build.gradle に入力しました

Step.3 AutoValue プラグインをインストールしました。

しかし、Javaコンパイラは私にこのエラーを与えます:

0 投票する
2 に答える
989 参照

java - Androidでfirebase 9.2で自動値を使用する方法

firebase 9.2.0+で自動値を使用したい。次のコードがあります。

しかし、これを呼び出すと、次のOffice office = childDataSnapshot.getValue(Office.class);エラーが発生します。

このエラーが発生する理由と解決方法を知っている人はいますか? jacksonfirebase がjson シリアライゼーションに使用されなくなったことを読みました。@JsonProperty("latitud")そのため、使用@PropertyNameに失敗した種類を指定する方法がわかりません。

また、抽象メソッドの名前を次のようpublic abstract double getLatitud();に変更しようとしましたが、その後、エラーは次のようになります:

したがって、これを解決する方法がわかりません。

解決

hatboysamFrank van Puffelenのおかげで、最終的に次の解決策でこの問題に直面することができました。

  1. hatboysam の回答とFrank van Puffelen のコメントに基づいて、Firebase のオブジェクトをシリアル化および逆シリアル化するための 2 つのメソッドを持つFirebaseUtil 列挙型を作成しました。
  2. Userテスト用にいくつかのPhoneクラスを作成します。
  3. 依存関係:

    /li>
  4. 使用例:

    /li>
0 投票する
1 に答える
961 参照

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 モジュールのどこでも使用できません。

0 投票する
1 に答える
4840 参照

java - gson で AutoValue 拡張機能を使用してセッターを追加する方法

最近、AutoValues (GSON) 拡張機能を使用して JSON データの解析を高速化するという概念に出会いました。実際、json を 2 倍の速さで解析できることがわかりました。

AutoValues を使用している間のデータ セットは不変ですが、多くの場合、データ セット/モデルは json に似ており、マッパーは必要ありません。

したがって、モデルクラスに個々のデータ要素を設定したい場合、これは実現可能ではないように見えます(抽象ゲッターしかなく、セッターがないためです。この問題を回避する方法はありますか、それともポイントがありませんか。サンプルコードを使用して説明しますAutoValue を使用した同様の構文です。

したがって、通常は次のようなコードを記述します

ただし、自動値を使用している間、モデル クラスの構造は次のように変更されます。

// ご覧のように、AutoValueModel 構造にはセッターが含まれていません (AutoValues の背後にある基本的な前提は不変であることがわかっているにもかかわらず、ユーザー アクションなどに基づいて) bValue だけを変更し、引き続き使用したい場合はどうでしょうかコードの他の部分で。次に、まったく同じ AutoValueModel を使用して json をシリアル化します。または、AutoValue 手法を使用して逆シリアル化してから、データセットを変更できるマップされたモデルを使用する必要がありますか? (この手法を使用すると、AutoValue を使用して得られた速度の利点が失われますか?)

また、 AutoValues について学んだ場所からの参照:

オートバリューの概要

AUTOVALUE GSON 拡張機能による JSON デシリアライゼーションの高速化

0 投票する
2 に答える
1209 参照

java - GSON、AutoValue、Retrofit 2 で代替名を逆シリアル化できない

JSON を pojo にデシリアライズするために、レトロフィット バージョン 2.1.0 を使用しています。pojo のフィールドは、json で異なる名前で受け取ることができます。フィールドを正しくデシリアライズするために、@serializedName アノテーションを次のように使用しました。

しかし、何らかの理由で、結果の JSON にキー「タイトル」の下にフィールドがある場合、Gson は正しく読み取りますが、フィールドが「名前」キーに関連付けられている場合は読み取られません。

逆シリアル化中に GSON に代替名を認識させるにはどうすればよいですか?

0 投票する
1 に答える
599 参照

android - Retrofit と autovalue を使用してプロパティを初期化する

GSON拡張機能でRetrofitとAutoValueを使用しています。すべて正常に動作しますが、サーバーが値を返さない場合にプロパティを初期化する方法が見つかりませんでした。NPE を回避するために注釈 @Nullable を追加できますが、null を回避し、json に設定されていないプロパティのデフォルト値を設定できるようにしたいと考えています。

gson 拡張機能を使用せずにビルダーを使用してプロパティを設定する方法は知っていますが、拡張機能を使用してデフォルト値を設定するときにこれらのビルダー (またはその他の手段) を使用する方法がわかりません。