问题标签 [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

Android 聊天在 DataSnapshot.getValue() 上崩溃以获取时间戳

我正在尝试将时间戳属性添加到我的 POJO。上面的解决方案告诉杰克逊忽略应用程序使用的真实数据成员。我正在使用 AutoValue,但不知道如何注释我的课程以使其正常工作。

我尝试使用自定义序列化程序:

但这将字符串date: "{.sv=timestamp}"写入firebase而不是生成时间戳

0 投票
1 回答
132 浏览

java - 将自动值对象打印为 Java 源代码

我经常发现自己想将一个活的 java 对象复制到我的测试中(在源代码中)。我怀疑这通常是可行的,但也许asJavaSourceCode()可以为所有@AutoValue对象生成一个方法?

这是一些代码来演示我想要的。

运行这个我得到。

我会认为其中任何一个都是对这个问题的有效答案:

  • “是的,这是一个图书馆链接
  • “不,它还不存在”
  • “其他人也做过类似的事情。”
  • “这是不好的做法,不要这样做,请参阅 Effective Java Book Item XYZ”
0 投票
0 回答
3588 浏览

java - @AutoValue 不适用于 Intellij 2016.1.3

我试图使用谷歌的@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);时,我收到了这个错误:

有人知道为什么我会收到此错误以及如何解决它?我读到 firebase 不再jackson用于 json 序列化。所以我不确定如何指定@JsonProperty("latitud")我使用@PropertyName失败的一种。

我还尝试重命名抽象方法public abstract double getLatitud();,然后错误是下一个:

所以我不确定如何解决这个问题。

解决方案

感谢hatboysamFrank van Puffelen,我终于可以通过下一个解决方案来面对这个问题。

  1. 我基于hatboysam回答和Frank van Puffelen评论创建了一个FirebaseUtil 枚举,其中有两种方法用于序列化和反序列化 Firebase 的对象。
  2. 我创建了几个UserPhone类进行测试。
  3. 依赖项:

    /li>
  4. 使用示例:

    /li>
0 投票
1 回答
961 浏览

android - Java 模块中的 Android Studio Autovalue 并在 Android 模块中使用

使用 Android Studio 我有一个 Android 模块和一个 Java 模块。在 Java 模块中,我想使用 AutoValue 来生成不可变的类。

一切似乎都工作正常(文件是在 Java 模块中生成的),但我无法在 Android 项目中访问这些文件。有什么建议么?

应用程序\build.gradle

域\build.gradle

域/MyLocation.java

当我构建域模块(java 模块)时,我看到这里生成了“AutoValue_MyLocation”文件:

但是,我无法在我的 Android 模块中的任何地方使用生成的类。

0 投票
1 回答
4840 浏览

java - 如何在 gson 中使用 AutoValue 扩展添加设置器

我最近遇到了使用 AutoValues (GSON) 扩展来加速解析我们的 json 数据的概念。我们实际上发现它解析我们的 json 的速度是原来的两倍。

但我错过了一点,使用 AutoValues 时的数据集是不可变的,但我们的数据集/模型通常与 json 相似,并且不需要映射器。

因此,如果我想在我的模型类中设置单个数据元素,这看起来不可行(因为我们只有抽象的 getter 而没有 setter。有没有办法解决这个问题或者我错过了一点。我将使用示例代码进行解释我们所做的以及使用 AutoValue 的类似语法。

所以我们通常会编写类似的代码

但是在使用 Auto Value 时,模型类的结构更改为

// 现在您可以看到 AutoValueModel 结构不包含任何设置器,如果我只想更改 bValue(基于用户操作,即使我知道 AutoValues 背后的基本前提是它们是不可变的)并继续使用在代码的其他部分。然后使用相同的 AutoValueModel 序列化一个 json。还是应该使用 AutoValue 技术进行反序列化,然后使用可以对数据集执行更改的映射模型?(如果我使用这种技术,我会失去使用 AutoValue 获得的速度优势吗?)

还从我了解 AutoValues 的地方参考:

AutoValue 简介

使用自动值 GSON 扩展实现更快的 JSON 反序列化

0 投票
1 回答
457 浏览

java - AutoValue - 无法调用没有参数的公共 uk.ivanc.archimvp.model.entities.Campaigns()

日志猫:

原因 : java.lang.InstantiationException: Can't instantiate abstract class uk.ivanc.archimvp.model.entities.Campaigns

详细信息: Failed to invoke public uk.ivanc.archimvp.model.entities.Campaigns() with no args

Campaigns.java

代码生成异常(onError被调用)

依赖项.gradle

0 投票
2 回答
1209 浏览

java - 无法使用 GSON、AutoValue 和 Retrofit 2 反序列化备用名称

我正在使用改造版本 2.1.0 将 JSON 反序列化为 pojos。pojo 中的字段可以在 json 中以不同的名称接收。为了正确反序列化该字段,我通过以下方式使用了@serializedName 注释:

但是,由于某种原因,当生成的 JSON 具有键“title”下的字段时,Gson 会正确读取它,但是当该字段与“name”键关联时,它不会被读取。

如何让 GSON 在反序列化期间识别备用名称?

0 投票
1 回答
242 浏览

android - Android Studio 没有从 Java 模块中获取 AutoParcelGson (AutoValue) 类

我有一个包含 2 个模块、1 个 Android 和 1 个 Java 的 Android 项目,我在两个模块中都使用了 AutoParcelGson AutoValue fork,它们可以正常生成类并且构建将运行,但是在 Android Studio 中它只能解决来自 Android 模块(使用com.neenbedankt.gradle.plugins:android-apt插件)的类,而不是 Java 模块(使用net.ltgt.gradle:gradle-apt-plugin插件)

是否有一些配置可以帮助我显示这些类?

0 投票
1 回答
599 浏览

android - 使用 Retrofit 和 autovalue 初始化属性

我将 Retrofit 和 AutoValue 与 GSON 扩展一起使用。一切正常,但是当服务器没有为其返回值时,我没有找到初始化属性的方法。我可以添加注释 @Nullable 以避免 NPE,但我希望能够避免空值并为 json 中未设置的属性设置默认值。

我知道如何在不使用 gson 扩展的情况下使用构建器来设置属性,但我不知道在使用扩展来设置默认值时如何使用这些构建器(或任何其他方法)。