问题标签 [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 - Using @AutoValue with nested classes gives a "cannot find symbol" error

When trying to use @AutoValue with nested classes:

I get a compiler error cannot find symbol for AutoValue_Example. Any ideas on what I'm doing wrong?

0 投票
2 回答
4407 浏览

java - Eclipse AutoValue 类无法构建

我正在运行带有 m2e 和 m2e-apt 插件的 Maven 3.1.1 的 Eclipse Kepler SR2,但我遇到了一个我不知道如何解决的错误。

我设法找到了@AutoValue进入我的 pom.xml 所需的所有依赖项,但现在我处于这样一种状态,即只有在需要定义的方法都具有原始返回类型时它才有效。如果我提供一个返回一个Object或更具体的抽象 getter,我会收到此错误:

我已经尝试了基础知识——清除了 maven 缓存,重新启动了 Eclipse,重建了项目......没有骰子。所以我深入研究了源代码,发现了一个差异,我不确定它是如何解决的。

在生成的 AutoValue 类的Velocity 模板中,检查了一些基本逻辑,用于以不同于对象的方式呈现基元,例如在第 37 行p.nullable。该p变量是AutoValueProcessor$Property类的一个实例,从前面链接的第 205 行可以看出,它有一个isNullable()方法,但没有nullable方法或属性。

那么 Velocity 渲染阶段是如何工作的呢?Velocity 是否会自动扩展p.nullablep.isNullable某种方式,但对我来说不是因为原因?这是一个错误吗?我不知道从这里做什么。


不编译的示例类:

EclipsePoint在类声明的开头突出显示描述的错误。

0 投票
1 回答
2364 浏览

java - @AutoValue - “找不到符号类生成”错误

使用 @AutoValue 注释时,我得到“找不到符号类生成”。

Gradle 依赖编译 'com.google.auto.value:auto-value:1.0-rc1'

此外,如何仅将选定的属性添加到 equals 和 hashcode 函数。

0 投票
1 回答
1260 浏览

maven - Gradle 依赖项 - com.google.auto:auto-common:1.0-SNAPSHOT

如何在我的 gradle 构建中获得 com.google.auto:auto-common:1.0-SNAPSHOT (传递依赖)来解决?

构建.gradle:

结果:

依赖树:(截断)

我尝试为自动通用添加显式依赖项,但没有成功。

令我惊讶的是,搜索“com.google.auto:auto-common:1.0-SNAPSHOT repository”之类的东西很少。看起来 1.0-SNAPSHOT 根本不在 Maven Central 中。有趣的是,看起来 1.0-SNAPSHOTjboss 的存储库中,但我的 gradle 构建似乎没有找到它。

以前有人见过这样的东西吗?帮助?

0 投票
0 回答
682 浏览

unit-testing - 如何在 Android Studio 的单元测试支持中使用 Google 的 AutoValue?

我想将 AutoValue 与 Android Studios 的新单元测试支持一起使用。

这可能吗?或者生成的代码不能被src/test/java类看到?

android-apt插件不适用于testApt范围

0 投票
1 回答
718 浏览

java - 从 Java 调用 Groovy 构建器

我正在尝试使用 Groovy(这对我来说是新的)用 Groovy 等价物替换 Java 值对象类,从而获得更简洁的代码,同时保持与 Java 代码库的其余部分兼容。(如果这次尝试失败,我可能会退回到谷歌@AutoValue。)

值对象应保持可使用构建器模式从 Java 代码实例化。setter 方法应该没有前缀,理想情况下,构建器应该可以通过具有可配置名称的静态方法进行实例化。

@groovy.transform.builder.Builder的 Javadoc 提到它可以在“如果你需要 Java 集成”时使用,我看到它也有配置参数,看起来很有希望,但我没有弄清楚如何从 Java 代码中使用它。

这是一个尝试,我不知道用什么代替 X:

问候.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)注释抽象类并实现可序列化应该足以使生成的值类在 GWT RPC 中可用。然而,对于下面的课程,我收到以下错误:

我尝试了各种变体(比如只实现常规的 Serializable)但没有成功。上课有什么问题?

Gradle 文件包括

GWT 版本:2.6.0

0 投票
1 回答
1632 浏览

auto-value - AutoValue 与 Builder 的自定义最终字段

将 AutoValue 与 Builder 模式一起使用时,如何在构造函数中初始化其他自定义最终字段?

例子

在现实世界的类中,初始化(如在 `fullPath 字段中)更昂贵,所以我只想做一次。我看到了两种方法:

1) 延迟初始化

2)在构建器中初始化

是否有另一种选择,以便该fullPath领域可以是最终的?

0 投票
2 回答
1153 浏览

spring-boot - 带有 Google AutoValue 和 spring-context-support 的 LogFactory ClassNotFoundException

Spring boot 项目依赖于 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 - 将 JDBI @BindBean 与 AutoValue 一起使用

TLDR; JDBI@BindBean注解会生成一个IllegalAccessException带有 AutoValue 的生成类型,因为生成的类型是包私有的,并且默认情况下无法使用反射访问。

JDBI 是不灵活的还是有通过 AutoValue 的解决方法?(下面的完整问题)

快速背景

我正在尝试将 JDBI@BindBean注释与使用 AutoValue 生成源的类型一起使用。

问题是生成的代码如下所示:

注意这个类是包私有的!

现在,如果我尝试使用@BindBean,例如:

因为AutoValue_Foo是包私有的,并且BindBeanFactory使用反射,如果尝试find使用AutoValue_Foo类型调用,结果是:

相关的 JDBI 代码在这里。我从 Java 反射的角度理解,这可以使用来解决,setAccessible(true)但这需要 JDBI 的 PR。

所以问题如下:

  1. 有没有办法重组我的代码,我可以在不创建新的 JDBI 映射器的情况下绑定Foo类型AutoValue_Foo使用?@BindBean

  2. 有没有办法@AutoValue生成 public. 我理解为什么这通常是不可取的(推动人们使用接口而不是实现)。

  3. 是不是BindBeanFactory太不灵活了?它是否应该使用 setAccessible(true)在其原始包之外可用的方法?