标签: auto-value

将@AutoValue与嵌套类一起使用会产生"无法找到符号"错误

尝试将@AutoValue与嵌套类一起使用时:

public class Nested {
  @AutoValue
  public static abstract class Example {
    public static Example create(String name, int integer) {
      return new AutoValue_Example(name, integer);
    }
    public abstract String name();
    public abstract int integer();
  }
}
Run Code Online (Sandbox Code Playgroud)

我得到一个编译错误cannot find symbolAutoValue_Example.关于我做错了什么的任何想法?

java auto-value

12
推荐指数
1
解决办法
3593
查看次数

如何将AutoValue与Retrofit 2一起使用?

我有AutoValue(以及android-apt插件)在一个项目中工作,我知道Ryan Harter的AutoValue的gson扩展,但是如何挂起Retrofit 2以在抽象类上使用扩展和工厂方法?

String grantType = "password";
Call<SignIn> signInCall = retrofitApi.signIn(email, password, grantType);
signInCall.enqueue(callback);
Run Code Online (Sandbox Code Playgroud)

例如,我想将AutoValue与SignIn JSON模型对象一起使用以强制实现不变性但是如何将Retrofit(或者更具体地说是Gson)连接到不可变的AutoValue模型类?

android auto-value retrofit2

12
推荐指数
1
解决办法
4975
查看次数

我如何子类化AutoValue类?

我正在使用AutoValue扩展来生成我的Parcelable Android类.文档明确指出一个@AutoValue不能扩展另一个:https: //github.com/google/auto/blob/master/value/userguide/howto.md#inherit

另一位开发人员正在帮我解决这个问题,并建议"如果你有共同的字段,你可以将它们放在两个实现都实现的接口中." 我假设这意味着图书馆更喜欢构图而不是继承.

我承认,我有点迷茫.如果有人可以提供一个简单的"子类化"AutoValue类的简单方法的例子,那将是值得赞赏的.这是一个简单的类:

@AutoParcelGson
public abstract class User implements Parcelable {

    public abstract String username();
    public static User create(String username) {
        return builder().username(username).build();
    }

    public static Builder builder() {
        return new AutoParcelGson_User.Builder();
    }

    @AutoParcelGson.Builder
    public interface Builder {
        Builder username(String username);
        User build();
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要另一个名为Customer的@AutoValue类,它有一些额外的字段.此外,@ AutoParcelGson是我正在使用的@AutoValue扩展,但它是相同的行为.

java android auto-value

12
推荐指数
1
解决办法
2308
查看次数

具有AutoValue的Android Room Persistence库实体

是否有可能都使用客房持久性库@Entity使用AutoValue@AutoValue和建设者在同一个POJO?我该怎么办?

android auto-value android-room

12
推荐指数
2
解决办法
1762
查看次数

Android Studio无法解析AutoValue类

我今天开始在我的一个项目中使用AutoValue,困扰我的是Android Studio无法解析生成的类名(AutoValue_DrawableContent)并用红色标记它:

在此输入图像描述

我怎么能压制这个警告?

intellij-idea android-studio auto-value

10
推荐指数
2
解决办法
3699
查看次数

是否可以在Java AutoValue中为集合添加值?

我有一个带有List属性的Java AutoValue类.我想允许构建器附加到List而不必传递整个构造的列表.

例:

import com.google.auto.value.AutoValue;
@AutoValue
public abstract class Deck {
    public abstract List<Card> cards();
    public static Builder builder() {
        return new AutoValue_Card.Builder()
            .cards(new ArrayList<Card>());
    }
    @AutoValue.Builder
    public abstract static class Builder {
        public abstract Builder cards(List<Card> cards);
        /**
         * Append card to cards in the constructed Deck.
         */
        public Builder addCard(Card card) {
            // Is it possible to write this function?
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编写addCard函数的最佳解决方案是什么?AutoValue是否已经以某种方式支持此功能?构造类中的中间卡属性对Builder不可见,因此我无法直接访问它.我可以尝试通过在Builder中保留我自己的卡副本来直接绕过Builder,这是唯一的选择吗?

java auto-value

9
推荐指数
2
解决办法
1767
查看次数

Kapt在Android Studio 3.0中无法与AutoValue一起使用

Gradle依赖项:

compile 'com.google.dagger:dagger:2.9'
annotationProcessor 'com.google.dagger:dagger-compiler:2.9'
kapt 'com.google.dagger:dagger-compiler:2.9'

provided "com.google.auto.value:auto-value:1.4.1"
annotationProcessor "com.google.auto.value:auto-value:1.4.1"
Run Code Online (Sandbox Code Playgroud)

得到这个堆栈跟踪:

:presentation:kaptDevDebugKotlin
e: @AutoValue public abstract class Categories implements CategoriesModel{
e:                                                        ^
e:   symbol: class CategoriesModel
e: path/Categories.java:13: error: cannot find symbol

w: warning: The following options were not recognized by any processor: '[kapt.kotlin.generated]'
w: 


e: org.jetbrains.kotlin.kapt3.diagnostic.KaptError: Error while annotation processing
    at org.jetbrains.kotlin.kapt3.AnnotationProcessingKt.doAnnotationProcessing(annotationProcessing.kt:90)
    at org.jetbrains.kotlin.kapt3.AnnotationProcessingKt.doAnnotationProcessing$default(annotationProcessing.kt:42)
    at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.analysisCompleted(Kapt3Extension.kt:149)
    at org.jetbrains.kotlin.kapt3.ClasspathBasedKapt3Extension.analysisCompleted(Kapt3Extension.kt:76)
    at org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM$analyzeFilesWithJavaIntegration$2.invoke(TopDownAnalyzerFacadeForJVM.kt:89)
    at org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(TopDownAnalyzerFacadeForJVM.kt:99)
    at org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration$default(TopDownAnalyzerFacadeForJVM.kt:76)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.analyze(KotlinToJVMBytecodeCompiler.kt:347)
    at org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.kt:104)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyze(KotlinToJVMBytecodeCompiler.kt:336)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules(KotlinToJVMBytecodeCompiler.kt:131)
    at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:165)
    at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:54)
    at org.jetbrains.kotlin.cli.common.CLICompiler.exec(CLICompiler.java:178) …
Run Code Online (Sandbox Code Playgroud)

kotlin android-studio auto-value kapt

9
推荐指数
1
解决办法
6970
查看次数

与Autovalue的Proguard

我刚开始使用AutoValue但我无法使用proguard.我有大约6000多个警告,看起来像这样

警告:autovalue.shaded.com.google.common.auto.common.MoreElements $ 1:找不到超类或接口javax.lang.model.util.SimpleElementVisitor6

实际错误显示了......

错误:任务':transformClassesAndResourcesWithProguardForDebug'的执行失败.java.io.IOException:请先纠正上面的警告.

我该如何解决这个问题?

android proguard auto-value android-proguard

8
推荐指数
1
解决办法
2830
查看次数

无法使用AutoValue和IntelliJ解析符号

我一直在尝试为IntelliJ的注释处理找到正确的设置,以便它与Gradle的构建过程共存.

每当我使用IntelliJ构建时,我都无法识别gradle-apt-plugin中生成的源代码.

我对我的项目的要求是:

  • IntelliJ和Gradle之间的构建应该是无缝的,不会干扰彼此的过程
  • 我需要使用IntelliJ的每个源集选项创建单独的模块
  • 我需要使用IntelliJ的基于文件夹的结构
  • IntelliJ需要能够识别并自动完成AutoValue类

以下是使用IntelliJ 2017.2.4和Gradle 3.5重现问题的MCVE的步骤:

  • 从IntelliJ创建一个新的Gradle项目
  • 选中"为每个源集创建单独的模块"选项
  • 打开build.gradle文件:
  • 添加以下plugins块:

plugins {
    id 'java'
    id 'net.ltgt.apt' version '0.12'
}
Run Code Online (Sandbox Code Playgroud)
  • 添加以下dependencies

dependencies {
    compileOnly 'com.google.auto.value:auto-value:1.5'
    apt 'com.google.auto.value:auto-value:1.5'
}
Run Code Online (Sandbox Code Playgroud)
  • 转到设置→构建,执行,部署→注释处理器
  • 选中" 启用注释处理"
  • 创建一个类:

@AutoValue
public abstract class GeneratedSourcesTest {

    static GeneratedSourcesTest create(String field) {
        return new AutoValue_GeneratedSourcesTest(field);
    }

    public abstract String field();
}
Run Code Online (Sandbox Code Playgroud)
  • 在IntelliJ上运行Build→Build Project
  • 打开GeneratedSourcesTest类,在静态工厂方法,一切编译好,但我得到错误:

cannot resolve symbol ‘AutoValue_GeneratedSourcesTest’

如何 …

java code-generation intellij-idea auto-value gradle-apt-plugin

8
推荐指数
2
解决办法
5381
查看次数

自动值包裹适配器能否应对另一个自动值类的Typed Set?

我调查auto-value及其扩展,也就是auto-value-parcelauto-value-parcel-adapter我的Android应用程序中.

我有这些模型类: -

@AutoValue
public abstract class Xenarchaeota implements Parcelable {

    @ParcelAdapter(AmoebaTypeAdapter.class)
    public abstract Set<Amoeba> amoebas();

    public static Builder builder() {
        return new AutoValue_Xenarchaeota.Builder();
    }

    @AutoValue.Builder
    public abstract static class Builder {

        public abstract Builder setAmoebas(Set<Amoeba> value);

        public abstract Xenarchaeota build();
    }
}
Run Code Online (Sandbox Code Playgroud)

@AutoValue
public abstract class Amoeba implements Parcelable {

    public abstract String surname();

    public static Builder builder() {
        return new AutoValue_Amoeba.Builder();
    }

    @AutoValue.Builder
    public abstract static class Builder {

        public abstract …
Run Code Online (Sandbox Code Playgroud)

android parcelable auto-value

7
推荐指数
1
解决办法
162
查看次数