問題タブ [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 投票する
2 に答える
4635 参照

java - ネストされたクラスで @AutoValue を使用すると、「シンボルが見つかりません」というエラーが発生します

ネストされたクラスで@AutoValueを使用しようとする場合:

のコンパイラ エラーcannot find symbolが発生しAutoValue_Exampleます。私が間違っていることについてのアイデアはありますか?

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

java - Eclipse AutoValue クラスのビルドに失敗する

m2e および m2e-apt プラグインに接続された Maven 3.1.1 を使用して Eclipse Kepler SR2 を実行していますが、解決方法がわからないというエラーが表示されます。

pom.xml で機能するために必要なすべての依存関係を見つけることができました@AutoValueが、現在、定義する必要があるメソッドがすべてプリミティブな戻り値の型を持っている場合にのみ機能する状態になっています。Objectまたはより具体的なものを返す抽象ゲッターを提供すると、次のエラーが発生します。

私は基本を試しました-mavenキャッシュをクリアし、Eclipseを再起動し、プロジェクトを再構築しました...サイコロはありません。そのため、ソース コードを掘り下げたところ、どのように解決するつもりなのかわからない不一致が見つかりました。

生成された AutoValue クラスのVelocity テンプレートには、プリミティブをオブジェクトとは異なる方法でレンダリングするための基本的なロジックがいくつかあります。たとえば、37 行目p.nullableでチェックされます。p変数は class のインスタンスでありAutoValueProcessor$Property、前のリンクの 205 行目に見られるように、メソッドはありますが、メソッドやプロパティisNullable()はありません。nullable

では、Velocity レンダリング フェーズはどのように機能するのでしょうか? Velocityは何らかの理由で自動拡張p.nullableされますか? p.isNullableこれはバグですか?ここからどうすればいいのかわからない。


コンパイルされないクラスの例:

EclipsePointは、クラス宣言の先頭で説明されているエラーを強調表示します。

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

java - @AutoValue - 「生成されたシンボル クラスが見つかりません」エラー

@AutoValue アノテーションを使用しているときに、「生成されたシンボル クラスが見つかりません」というメッセージが表示されます。

Gradle 依存関係コンパイル 'com.google.auto.value:auto-value:1.0-rc1'

また、選択したプロパティのみを equals および hashcode 関数に追加する方法。

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

java - Java から Groovy ビルダーを呼び出す

私は Groovy (私にとっては新しい) を使用して、Java 値オブジェクト クラスを Groovy と同等のものに置き換え、残りの Java コードベースとの互換性を維持しながら、よりクリーンで簡潔なコードを取得しようとしています。(この試行が失敗した場合、Google にフォールバックする可能性があります@AutoValue。)

値オブジェクトは、ビルダー パターンを使用して Java コードからインスタンス化できます。セッター メソッドはプレフィックスなしである必要があり、理想的にはビルダーは、構成可能な名前を持つ静的メソッドを介してインスタンス化できる必要があります。

@groovy.transform.builder.BuilderのJavadocは、「Java統合が必要な場合」に使用できると述べており、有望に見える構成パラメーターもあることがわかりますが、Javaコードから使用する方法がわかりませんでした。

これは、X を何に置き換えたらよいかわからない場合の試みです。

Greeting.groovy:

GroovyGreetingTest.java:

編集: 2 つのクラスが生成されtarget/classes/com/hello/GroovyGreeting.classますtarget/classes/com/hello/GroovyGreeting$com/hello/GroovyGreetingBuilder.class。そこにある '$' は本当に奇妙で、それを参照できません (import com.hello.GroovyGreeting$com.hello.GroovyGreetingBuilder違法です)。また、何らかの理由でIntelliJ IDEAでは逆コンパイルできますGroovyGreetingBuilder.classが、できませんGroovyGreeting.class(開こうとしても反応しません)。

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

java - AutoValue を使用した GWT シリアライゼーション例外

AutoValue のドキュメントによると、@GwtCompatible(serializable = true)で抽象クラスに注釈を付け、serializableを実装するだけで、生成された値クラスを GWT RPC で使用できるようになります。それでも、以下のクラスでは、次のエラーが発生します。

さまざまなバリアント(通常のシリアライズ可能のみを実装するなど)を試しましたが、成功しませんでした。クラスの何が問題になっていますか?

Gradle ファイルに含まれるもの

GWT バージョン: 2.6.0

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

spring-boot - Google AutoValue と spring-context-support を使用した LogFactory ClassNotFoundException

Spring ブート プロジェクトは、auto-value 1.1 と spring-context-support 4.2.1 に依存しています。で実行するとmvn spring-boot:run、次のエラーが表示されます。

AutoValue のpom.xmlを見てください。Apache Commons はシェーディングされているようですが、シェーディングされたクラスがロードされないのはなぜですか?

私のアプリケーションのpom.xmlは Github にあります。

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

java - AutoValue での JDBI @BindBean の使用

TLDR; 生成された型はパッケージ プライベートであり、デフォルトではリフレクションを使用してデフォルトでアクセスできないため、 JDBI@BindBeanアノテーションはwith AutoValue で生成された型を生成します。IllegalAccessException

JDBI は柔軟性がないのでしょうか、それとも AutoValue による回避策はありますか? (以下の質問全文)

簡単な背景

ソースが AutoValue を使用して生成された型でJDBI@BindBeanアノテーションを使用しようとしています。

問題は、生成されたコードが次のようになることです。

クラスがパッケージ プライベートであることに注意してください。

を使用しようとする@BindBeanと、たとえば次のようになります。

AutoValue_Fooパッケージは非公開であり、BindBeanFactoryリフレクションを使用するためfindAutoValue_Foo型で呼び出しを試みると、結果は次のようになります。

関連する JDBI コードはこちらです。Java リフレクションの観点からは、これを使用して解決できることは理解していますsetAccessible(true)が、それには JDBI への PR が必要です。

したがって、質問は次のとおりです。

  1. 新しい JDBI マッパーを作成せずFooにタイプAutoValue_Fooをバインドできるコードを再構築する方法はありますか?@BindBean

  2. @AutoValueであるクラスを生成 する方法はありますかpublic。これが一般的に望ましくない理由を理解しています(人々に実装ではなくインターフェイスを使用するように促します)。

  3. BindBeanFactory柔軟性がありませんか?setAccessible(true)元のパッケージの外部で利用可能なメソッドを利用する必要 がありますか?