问题标签 [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.
android - 在 AutoValue POJO 上保存 firebase ServerValue.TIMESTAMP
Android 聊天在 DataSnapshot.getValue() 上崩溃以获取时间戳
我正在尝试将时间戳属性添加到我的 POJO。上面的解决方案告诉杰克逊忽略应用程序使用的真实数据成员。我正在使用 AutoValue,但不知道如何注释我的课程以使其正常工作。
我尝试使用自定义序列化程序:
但这将字符串date: "{.sv=timestamp}"
写入firebase而不是生成时间戳
java - 将自动值对象打印为 Java 源代码
我经常发现自己想将一个活的 java 对象复制到我的测试中(在源代码中)。我怀疑这通常是可行的,但也许asJavaSourceCode()
可以为所有@AutoValue
对象生成一个方法?
这是一些代码来演示我想要的。
运行这个我得到。
我会认为其中任何一个都是对这个问题的有效答案:
- “是的,这是一个图书馆链接”
- “不,它还不存在”
- “其他人也做过类似的事情。”
- “这是不好的做法,不要这样做,请参阅 Effective Java Book Item XYZ”
java - @AutoValue 不适用于 Intellij 2016.1.3
我试图使用谷歌的@AutoValue。但是,它不适用于我的 Intellij。
Step.1我被选上了这门课
然后
Step.2 将此代码输入到build.gradle
Step.3我已经安装了 AutoValue 插件。
但是Java编译器给我这个错误:
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();
,然后错误是下一个:
所以我不确定如何解决这个问题。
解决方案
感谢hatboysam和Frank van Puffelen,我终于可以通过下一个解决方案来面对这个问题。
- 我基于hatboysam回答和Frank van Puffelen评论创建了一个FirebaseUtil 枚举,其中有两种方法用于序列化和反序列化 Firebase 的对象。
- 我创建了几个
User
和Phone
类进行测试。 依赖项:
/li>使用示例:
/li>
android - Java 模块中的 Android Studio Autovalue 并在 Android 模块中使用
使用 Android Studio 我有一个 Android 模块和一个 Java 模块。在 Java 模块中,我想使用 AutoValue 来生成不可变的类。
一切似乎都工作正常(文件是在 Java 模块中生成的),但我无法在 Android 项目中访问这些文件。有什么建议么?
应用程序\build.gradle
域\build.gradle
域/MyLocation.java
当我构建域模块(java 模块)时,我看到这里生成了“AutoValue_MyLocation”文件:
但是,我无法在我的 Android 模块中的任何地方使用生成的类。
java - 如何在 gson 中使用 AutoValue 扩展添加设置器
我最近遇到了使用 AutoValues (GSON) 扩展来加速解析我们的 json 数据的概念。我们实际上发现它解析我们的 json 的速度是原来的两倍。
但我错过了一点,使用 AutoValues 时的数据集是不可变的,但我们的数据集/模型通常与 json 相似,并且不需要映射器。
因此,如果我想在我的模型类中设置单个数据元素,这看起来不可行(因为我们只有抽象的 getter 而没有 setter。有没有办法解决这个问题或者我错过了一点。我将使用示例代码进行解释我们所做的以及使用 AutoValue 的类似语法。
所以我们通常会编写类似的代码
但是在使用 Auto Value 时,模型类的结构更改为
// 现在您可以看到 AutoValueModel 结构不包含任何设置器,如果我只想更改 bValue(基于用户操作,即使我知道 AutoValues 背后的基本前提是它们是不可变的)并继续使用在代码的其他部分。然后使用相同的 AutoValueModel 序列化一个 json。还是应该使用 AutoValue 技术进行反序列化,然后使用可以对数据集执行更改的映射模型?(如果我使用这种技术,我会失去使用 AutoValue 获得的速度优势吗?)
还从我了解 AutoValues 的地方参考:
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
java - 无法使用 GSON、AutoValue 和 Retrofit 2 反序列化备用名称
我正在使用改造版本 2.1.0 将 JSON 反序列化为 pojos。pojo 中的字段可以在 json 中以不同的名称接收。为了正确反序列化该字段,我通过以下方式使用了@serializedName 注释:
但是,由于某种原因,当生成的 JSON 具有键“title”下的字段时,Gson 会正确读取它,但是当该字段与“name”键关联时,它不会被读取。
如何让 GSON 在反序列化期间识别备用名称?
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
插件)
是否有一些配置可以帮助我显示这些类?
android - 使用 Retrofit 和 autovalue 初始化属性
我将 Retrofit 和 AutoValue 与 GSON 扩展一起使用。一切正常,但是当服务器没有为其返回值时,我没有找到初始化属性的方法。我可以添加注释 @Nullable 以避免 NPE,但我希望能够避免空值并为 json 中未设置的属性设置默认值。
我知道如何在不使用 gson 扩展的情况下使用构建器来设置属性,但我不知道在使用扩展来设置默认值时如何使用这些构建器(或任何其他方法)。