问题标签 [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 投票
0 回答
112 浏览

android - 为什么我在构建项目时不断收到“isBoxedPrimitive()”错误?

使用auto-value-parceland时,我不断收到相同的错误auto-value-firebase。该项目无需添加它们的依赖项和用法即可工作。但是当我将它们添加回来时,问题又回来了。请看一下我的app/build.gradle文件

0 投票
0 回答
1420 浏览

java - AutoValue 在 Eclipse Oxygen 中不起作用

我正在我的项目中使用Eclipse IDE for Java Developers Version: Oxygen.1a Release (4.7.1a)并尝试使用 Google 的AutoValue库。

我已将其作为 Maven 依赖项包含在内:

并尝试使用它:

我遇到的问题AutoValue_Person是无法解决类型。这应该是一个自动生成的类。

我还m2e-apt为 Eclipse 安装了插件,并设置Annottion processing mode为:“自动配置 JDT APT”,但这并没有解决问题。

有没有办法让它在 Eclipse 中工作?

0 投票
1 回答
379 浏览

java - 避免代表 JSON 的 POJO 的样板代码

我正在创建一个包含许多不同的库,这些库NetworkMessages通常采用 JSON 格式,现在需要一个相应的 Java 模型。

问题是这些消息可以很容易地在 JSON 中包含大约 100 个字段。其中一些是强制性的(30%),一些是可选的(70%)

所以我最关心的是如何最小化相应模型中的样板代码。因为,就像我说的,那些 POJO 很容易有大约 100 个字段,还有那么多 getter,以及构造函数中的那么多字段。

我将举一个小的例子Message,但请记住,消息通常要大得多(更多字段)。

消息A.java

现在,我尝试通过使用 Google 的AutoValue库来解决其中的一些问题,然后代码看起来好一点,但仍然调用了具有许多字段的构造函数。

消息A.java

现在这更好了,但是有一个问题是我不能有可选的返回类型,所以我可以在我的代码中浮动空值,并且应该在其他地方执行大量的空检查。

你有什么建议,怎么做?

0 投票
1 回答
325 浏览

java - 为什么将字段从 int 更改为 Integer 会导致对象从集合中消失?

有一个关于 AutoValue 的演示文稿(一种在 Java 中定义不可变对象的简洁方法,具有 , 等的合理默认值equalshashCodehttps://docs.google.com/presentation/d/14u_h-lMn7f1rXE1nDiLX0azS3IkgjGl5uxp5jGJ75RE/edit#slide=id。 g2a5e9c4a8_047

一开始,他们讨论了 AutoValue 的一些替代方案。显然,一种替代方法是手动编码的 POJO。他们警告说这个 POJO 出乎意料地难以改变。

我在这里抄录了这张幻灯片:

改变真的有那么大的风险吗?

假设一个必需的 int 字段变为可选的。你改变

int number;

Integer number;

测试仍然通过......一切都很好......直到有一天,放入集合中的对象开始神秘地从集合中“消失”!为什么?(留给读者作为练习。)

我无法弄清楚这个“练习”。什么样的“消失”?contains(element)竟然是falsesize()没有减量remove()iterator()不再包含该元素?为什么会发生这些?

0 投票
1 回答
464 浏览

java - 创建自定义 Nullable 注释

我想创建一个annotation有效地作为javax.annotation.Nullable. 我需要这个的原因是在我的上下文中我只需要一个不同的名称。

问题是我有一个必须充当的字段,Nullable以便AutoValue它不会自动生成用于抛出异常的代码,如果值为null. 同时,我需要NotNullJSR-303 验证的值。

简单来说,我希望能够将我的对象构建为无效状态,然后将其传递给将对其进行处理的验证器。我希望通过它处理所有验证Hibernate Validator API将生成违规约束,而不会使我的程序因异常而崩溃。

所以我发现下面会做我想要的。

如果值不存在,这将导致AutoValue不抛出异常,但 Hibernate Validator 仍将验证它不应该为空。这里唯一的问题是“Nullable”这个词,我想称之为“AutoValueNullable”。

我将如何“重新发明” Nullable,或者是否有它的开源代码?

0 投票
1 回答
998 浏览

java - Gradle 插件与 AutoValue 和 FreeBuilder 的混淆/冲突

我正在试验 Gradle/IntelliJ 和各种 Java 构建器/容器。但是,我无法在同一个项目中同时配置 org.inferred.FreeBuilder 和 com.google.auto.value.AutoValue。

使用下面的 build.gradle 文件,我能够成功编译带有 AutoValue 的类(来自 AutoValue文档的动物示例)。

但是,只要我取消注释“id 'org.inferred.processors”和“processor 'org.inferred:freebuilder:1.14.6'”,我就会得到

:processorPath \main\java\example\com\Animal.java:12: 错误:找不到符号返回新 AutoValue_Animal(name, numberOfLegs); ^ 符号:类 AutoValue_Animal 位置:类 Animal 1 错误:compileJava FAILED

我正在尝试从这些来源中提取信息:

0 投票
2 回答
305 浏览

android - auto-value-parcel-adapter 可以处理另一个 auto-value 类的 Typed Set 吗?

我正在调查auto-value及其扩展,即auto-value-parcelauto-value-parcel-adapter我的 Android 应用程序中。

我有这些模型类:-

我的类型适配器是我出现问题的地方

我需要传递给 readTypedArray 的 CREATOR 在 AutoValue_Amoeba 中声明。

我的错误在哪里?误解auto-value-parcel

0 投票
0 回答
486 浏览

java - Android AutoValue 继承

我很难在AutoValue. 我有一个提供交​​易细节的 API。某些字段存在于所有类型的交易中,但细节不存在。每种交易类型的详细信息都是特定的。

交易类型 1 json 响应

交易类型 2 json 响应

如果没有AutoValue,我只需要创建一个Parent Class具有status并将date其扩展到具有特定details字段的特定对象。

家长班:

第一儿童班

二孩班

两个孩子都将继承statusanddate而不在每个对象上指定它。我的问题是AutoValue不支持这个。没有在每个对象上声明所有通用字段的解决方法是什么?

0 投票
1 回答
955 浏览

android - 找不到符号类 AutoValueGson_AutoValueGsonFactory

我希望你能帮助我,我正在尝试在我的android项目中实现autovalue,但是没有生成代码。

我在 app/build.gradle 中添加了:

在编译器>注释处理器中的android studio 3.0默认设置中,我选中了启用注释处理,并选择了从项目类路径中获取处理器。

我创建了这样的 AutoValueGsonFactory 类:

然后我点击构建>重建项目

但是不工作,抛出这个错误:

错误:(16, 20) 错误:找不到符号类 AutoValueGson_AutoValueGsonFactory

我做错了什么或我错过了什么?

0 投票
0 回答
103 浏览

java - 是否可以在 Swift 中自动生成(和更新)Hashable 的实现?

在 Java 中,可以使用AutoValue库为值对象自动生成toString()hashCode()和的实现。优点是(除其他外)这些方法在添加新字段时会自动更新。我的问题是 Swift 是否有等效的功能(内置或作为库)?equals(Object)

例子

一个简单的例子,展示了 Swift 的现状。考虑以下结构:

为了让它符合Hashable我修改它如下:

添加的代码虽然很简单,但给程序员带来了额外的负担,尤其是当软件进一步发展时(就像通常那样)。理想情况下,我希望能够简单地向结构添加一个属性(如 Java 中的注释):

目前这是不可能的,因为无法在 Swift 中指定自定义属性。有没有另一种方法可以在 Swift 中实现这一点?

Java 中 AutoValue 的动机

以下文本来自AutoValue页面,它激发了创建 AutoValue 的原因。我希望同样的推理适用于 Swift 的上下文,但我在 Swift 中的经验不如在 Java 中的经验,所以如果我错了,请纠正我。

值类在 Java 项目中极为常见。这些是您希望将具有适当相等字段值的任何两个实例视为可互换的类。没错:我们谈论的是那些最终以臃肿、重复、公式化但容易出错的方式实现 equals、hashCode 和 toString 的类。

第一次编写这些方法还不错,借助一些辅助方法和 IDE 模板。但是一旦写出来,它们就会继续给审稿人、编辑和未来的读者带来负担。他们广泛的样板代码大大降低了代码的信噪比……而且他们喜欢隐藏难以发现的错误。

AutoValue 提供了一种更简单的方法来创建不可变值类,代码更少,出错空间更小,同时不会限制您按照您想要的方式对类的几乎任何方面进行编码的自由。