尝试将@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 symbol的AutoValue_Example.关于我做错了什么的任何想法?
我有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模型类?
我正在使用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扩展,但它是相同的行为.
我今天开始在我的一个项目中使用AutoValue,困扰我的是Android Studio无法解析生成的类名(AutoValue_DrawableContent)并用红色标记它:
我怎么能压制这个警告?
我有一个带有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,这是唯一的选择吗?
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) 我刚开始使用AutoValue但我无法使用proguard.我有大约6000多个警告,看起来像这样
警告:autovalue.shaded.com.google.common.auto.common.MoreElements $ 1:找不到超类或接口javax.lang.model.util.SimpleElementVisitor6
实际错误显示了......
错误:任务':transformClassesAndResourcesWithProguardForDebug'的执行失败.java.io.IOException:请先纠正上面的警告.
我该如何解决这个问题?
我一直在尝试为IntelliJ的注释处理找到正确的设置,以便它与Gradle的构建过程共存.
每当我使用IntelliJ构建时,我都无法识别gradle-apt-plugin中生成的源代码.
我对我的项目的要求是:
以下是使用IntelliJ 2017.2.4和Gradle 3.5重现问题的MCVE的步骤:
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)
GeneratedSourcesTest类,在静态工厂方法,一切编译好,但我得到错误:cannot resolve symbol ‘AutoValue_GeneratedSourcesTest’
如何 …
java code-generation intellij-idea auto-value gradle-apt-plugin
我调查auto-value及其扩展,也就是auto-value-parcel和auto-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) auto-value ×10
android ×5
java ×4
android-room ×1
kapt ×1
kotlin ×1
parcelable ×1
proguard ×1
retrofit2 ×1