问题标签 [external-annotations]

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

eclipse - Java 8 Optional.ifPresent 是我的代码错误还是日食?

我是 Java 8 的新手,正在尝试 Null 类型注释和 Optional。

对于下面的示例,我使用 String 而不是我的类,并且调用 toUpperCase 只是为了调用某些东西,在我的情况下,我实际上调用了一个传入参数的函数(所以不要认为我可以使用 :: 运算符和/或映射)。

在 Eclipse 中,我打开了 Java - 编译器 - 错误/警告 - 空分析错误。

我的测试代码如下:

使用 Eclipse 类型 null 注释和 Optional.ifPresent 似乎不能很好地结合在一起。

我是否在浪费时间试图让这样的事情发挥作用?我是否应该恢复将 getter 分配给 temp var,然后检查是否为 null,如果不调用我的函数?

0 投票
1 回答
593 浏览

java - How to define Eclipse external null annotations for parameters in JRE methods

I am trying to annotate the JRE method <T> T[] toArray(T[] a) from java.util.Set using Eclipse's external null annotations. The expected effect should be equivalent to this:

When using Eclipse's Annotate command I can annotate the return type of the method properly (after I selected the T[] and position the cursor before the [). However trying to do the same with the parameter fails. Pressing Cmd-1 simply beeps, as does selecting "Annotate" when calling the command from the context menu.

I finally ended up editing the corresponding Set.eea file manually to defined the required annotation, taking care of the proper eea file layout. I.e. I changed the annotatedSignature in:

to

This works fine and the annotation is correctly processed by the compiler.

As I can annotate the return type but not a parameter type I am wondering what I am doing wrong. Or is this a limitation of the current Eclipse version?

I am using Eclipse Mars Release (4.5.0, Build id: 20150621-1200) and jdk1.8.0_60.

0 投票
1 回答
644 浏览

java - java.lang.Object#getClass() 的 Eclipse 外部空注释

我正在使用 Eclipse Mars 中提供的外部空注释工具。我正在尝试为其添加外部注释,java.lang.Object#getClass()但似乎无法正确签名。我尝试了以下变体:

getClass()但在将调用结果传递给接受 的实例的方法时继续收到警告Class<?>,其中该参数用 注释@NonNull

以下是重现该问题的最小 Eclipse Mars 项目的相关文件(此示例使用上面的第一个空注释变体,但在使用第二个变体时我也收到相同的警告):

适用于 Windows 64 位
Oracle JDK 1.8.0_60的 Eclipse Mars 版本(4.5.0;20150621-1200)

src/bar/Foo.java

src/bar/package-info.java

注释/java/lang/Object.eea

.settings/org.eclipse.jdt.core.prefs(部分)

.classpath

对于上述项目,我在Foo.java的第 10 行(printType调用位置)收到以下警告:

这与我在没有外部空注释存在的情况下得到的警告相同。

如何正确创建外部空注释java.lang.Object#getClass()以删除此警告?还是我在声明中的问题printType

0 投票
1 回答
307 浏览

java - 如何使用 Eclipse 外部注释使用通用集合正确注释方法

我正在尝试java.util.List.toArray使用 Eclipse 的外部注释来注释该方法,但我不确定如何注释返回类型。如果我的列表具有以下签名:

List.toArray 应该返回:

但是,如果列表可以包含可为空的元素:

List.toArray 也应该返回一个包含可为空元素的数组:

我正在使用 Eclipse Neon,这甚至可能吗?Eclipse Neon New and Noteworthy 页面似乎为 List.get() 提供了一个示例,并建议我应该省略该值的无效性,但这似乎不适用于数组?这是我正在使用的外部注释定义:

但这不起作用:

collect.toArray被标记为错误:

Null 类型安全(类型注释):'String[]' 类型的表达式需要未经检查的转换才能符合 '@NonNull String []'

我怎样才能解决这个问题?这甚至可以与 Eclipse Neon 一起使用吗?

0 投票
1 回答
117 浏览

java - AbstractStreamEx.nonNull() 的 Eclipse 外部 Null 注释

考虑以下示例代码。此代码使用 Eclipse@NonNull@Nullable注释来检查nulls。不幸的是,Eclipse 在行上标记了一个错误map(toNonNull)

这是错误消息:

Null 类型不匹配(类型注释):需要“Function”,但此表达式的类型为“Function<@NonNull Integer, @NonNull Integer>”

我想在StreamExnonNull()(或更准确地说AbstractStreamEx)上创建一个 Eclipse 外部注释,nonNull()以便 Eclipse 知道流中的值不能为空。

这是 Eclipse 外部注释的开始。

我放???什么?

0 投票
2 回答
323 浏览

eclipse - 静态内部类的 Eclipse 外部注释格式是什么?

我正在尝试为静态内部类 Map.Entry 编写一个 Eclipse 外部注释文件。我该怎么做呢?

我在所有外部注释文件所在的文件夹下的子文件夹中Map$Entry.eea创建了一个名为的文件。java/util这是该文件的内容。

entry.getValue()Eclipse 仍然在以下代码中标记警告:

警告是:

0 投票
2 回答
248 浏览

java - 在 IDEA 2019.3+ 中更改外部注释位置

IntelliJ IDEA 允许您添加外部注释。

在此处输入图像描述

但是,这些文件直接进入项目的根目录。

在此处输入图像描述

如何更改文件夹?
我找不到设置。

0 投票
1 回答
103 浏览

java - Eclipse null 分析在泛型参数上有@NonNull

我在使用此代码时遇到问题...

注意:该包@NonNullByDefault在 package-info.java 中带有注释。

在上面代码的最后一行,ToStringSerializer.instance有以下错误...

空类型安全(类型注释):类型'ToStringSerializer'的表达式需要未经检查的转换才能符合'StdSerializer<@NonNull Object>',对应的超类型是'StdSerializer'

ToStringSerializer.eea文件有...

为什么 Eclipse 2021-03 (4.19.0 build 20210312-0638) 说ToStringSerializer.instance需要...<@NonNull...>?Eclipse 如何确定Object必须是@NonNull?我该如何解决?

我在 Eclipse 2020-12 上发现了这个问题,它也发生在 Eclipse 2021-03 上。