问题标签 [jsr305]

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 回答
4319 浏览

java - apk文件中的jsr305_annotations文件夹

我收到了有关安装 apk 的问题的报告。我尝试将 apk 提取为 zip 文件,并在根 APK 中找到文件夹 jsr305_annotations,其中文件夹:v0_r47 -> 文件:V0_r47.gwt.xml 文件:Jsr305_annotations.gwt.xml

我想要有关这些文件和文件夹的信息以及确保它们不包含在我的应用程序中的方法

谢谢

使用 Eclipse 版本:3.8.2 构建 ID:M20130131-0800

Android开发工具包版本:22.0.1.v201305230001--685705

0 投票
2 回答
1062 浏览

java - @Nonnull 与不同的 IDE - 警告不必要的空检查

我在一个开发人员使用不同 IDE(Eclipse、Netbeans 和 IntelliJ)的环境中工作。我使用@Nonnull 注释 (javax.annotation.Nonnull) 来指示方法永远不会返回 null:

如果其他开发人员执行以下操作之一,我希望他们收到警告:

  1. 更改方法以返回 null 而不删除 @Nonnull 注释
  2. 不必要地检查使用 @Nonnull 显式定义的方法是否为 null: if (foo.getBars() == null) { ... do something ... }

例如,IntelliJ 支持第一种情况。第二个不是;没有警告客户检查 null 是不必要的。

在任何情况下,我们都计划转向返回集合的克隆而不是集合本身,所以最好忘记@Nonnull 并这样做:

编辑:

澄清一下,我不考虑为此更改 IDE。我想知道上述 IDE 是否支持我上面描述的内容 - 或者,如果有充分的理由说明为什么不支持它。

我明白不要过分依赖合同。但是,如果我使用最后一段中的样式编写 getBars()(返回列表的克隆),那么例如 IntelliJ 会为任何执行此操作的代码标记警告

如果您选择遵循此警告并删除空检查,您似乎同样依赖于 getBars() 实现不会改变。但是,在这种情况下,您似乎依赖于实现细节而不是明确的合同(就像@Nonnull 的情况一样)。

编辑#2:

我不关心执行速度,空检查确实非常快。我担心代码的可读性。考虑以下:

选项 A:

选项 B:

我认为选项 B 比选项 A 更具可读性。由于代码的阅读频率高于编写频率,因此我想确保我(以及我们团队中的其他人)编写的所有代码都尽可能具有可读性。

0 投票
0 回答
383 浏览

java - FindBugs 和非负注释 (jsr 305)

有没有人@Nonnegative与 FindBugs 合作过,也许是 FindBugs contrib ?你使用哪个包, javax.annotation ?

任何其他检查它的工具(除了 IntelliJ)?

0 投票
3 回答
1295 浏览

java - JSR 305 注释可以与将在 Android 上运行的代码一起使用吗?

javax.annotation.Nonnull可以在将在 Android 上运行的代码中使用JSR 305 注释吗?看起来 Dalvik VM 不支持该软件包,并且这些注释具有运行时保留策略。有没有人使用 javax 包(或使用 eclipse JDT 之类的替代方案)让它工作?

0 投票
1 回答
142 浏览

java - Eclipse Juno 和 Kepler 的 @Nonnull 行为不同?

我遇到了一个相当奇怪的场景,到目前为止我已经设法查明了不同版本的 Eclipse。我想知道是否有人可以告诉我到底是什么问题(朱诺不支持,它,开普勒提供更好的支持等)。我正在使用 jsr305 进行注释。

我有以下示例代码来复制行为。

这不应该像我明确说过的那样使用 test 不应该为空的注释。它在开普勒中捕捉到了它,但在朱诺中却没有。所有的设置都是一样的,这只是与jsr305版本不兼容的情况吗?

0 投票
1 回答
7673 浏览

java - 为什么我需要添加工件 JSR305 才能使用 Guava 14+?

在寻找有关 stackoverflow 的信息时,我看到了一个类似于我的问题,但这里没有真正的答案。

我需要将我的 Maven 项目从guava 11.0.2迁移到guava 14或更高版本(我需要RangeSet)。我用依赖项更新了我的 maven pom:

然后我运行 maven 构建,并得到了这个错误:

我仔细看了看,这个注释是由JSR305提供的,它依赖于guava 11.0.2,正如mvn 存储库所报告的那样。

我觉得奇怪的是guava 14也依赖于JSR305作为mvn 存储库报告。

如果我将 JSR 依赖项添加到我的 pom 中,则编译运行良好:

但是,如果番石榴已经依赖它,为什么我必须将此依赖项添加到我的 pom 中?这看起来更像是一种解决方法而不是解决方案,我更愿意理解并使事情变得干净。

感谢您的参与。

0 投票
0 回答
124 浏览

scala - 使用 JCIP/JSR-305 注解对 Scala 锁定/同步代码进行静态分析

有什么方法可以让我使用JCIPJSR-305注释(例如 @GuardedBy)静态分析 Scala 代码的锁定/同步问题。

在检查 Java 代码时,FindBugs 和 IntelliJ IDEA 都对这些注释提供了出色的支持,但我没有太多运气让它们与 Scala 代码一起工作。当我尝试在我的 Scala 代码中应用这些注释时,代码编译得很好,但是这两个工具都无法在故意错误的程序中标记违规行为。

我知道 FindBugs 分析 JVM 字节码,所以在 Scala 中应用时,注释可能没有编译为预期的输出。

0 投票
2 回答
1947 浏览

java - Guava Optional 和 @NonNull 注解

我正在尝试不同的方法来摆脱我的代码中的 NPE。我在 Eclipse 中使用空值分析,我非常喜欢 @NonNullByDefault。但是今天我遇到了番石榴的可选问题:

我在返回线上得到以下评论:

我尝试使用 JSR305 注释无济于事。有没有办法让它工作(同时使用 Optional 和 @NonNull 注释)?

0 投票
1 回答
240 浏览

java - 如何使用 JPA 和 Hibernate 分离实体的关键公共类?

我的实体类有共同的属性。他们必须有Id - 序列longDate createdDate显示何时将实体的元组添加到 DB 和Date lastModifiedDate属性,显示最后一次修改元组的时间。

我使用 JPA 2.1。,休眠 4.3.6.Final

所以我制作了具有关键属性的公共类:

和另一个使用这个公共键值的类

好的,一切都很好,但是长 id AbstractArticle 是相同的 0,数据库中的所有元组都以 0 作为 id。这是什么意思。有任何想法吗?

0 投票
1 回答
308 浏览

java - 爪哇。JPA。带有@org.jetbrains.annotations.NotNull 的@Entity 类属性

如果 DB 模式禁止某些表列保留 null,是否有办法使用 @org.jetbrains.annotations.NotNull(或任何其他符合 JSR-305 的注释)标记相应的实体类属性,以通过 IDEA 检查提供更多信息以进行无效推断(或其他静态分析工具)?

当我尝试执行此检查报告时,必须在类初始化程序中初始化标有 @NotNull 的属性。我想鉴于这个事实,不可能实现我上面提到的?无论如何,JPA 提供者将创建具有未初始化属性的实体类对象,然后只用数据库数据填充它,所以从静态分析工具的角度来看,所有属性总是可以为空的?

提前致谢。