问题标签 [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.
eclipse - Java 8 Optional.ifPresent 是我的代码错误还是日食?
我是 Java 8 的新手,正在尝试 Null 类型注释和 Optional。
对于下面的示例,我使用 String 而不是我的类,并且调用 toUpperCase 只是为了调用某些东西,在我的情况下,我实际上调用了一个传入参数的函数(所以不要认为我可以使用 :: 运算符和/或映射)。
在 Eclipse 中,我打开了 Java - 编译器 - 错误/警告 - 空分析错误。
我的测试代码如下:
使用 Eclipse 类型 null 注释和 Optional.ifPresent 似乎不能很好地结合在一起。
我是否在浪费时间试图让这样的事情发挥作用?我是否应该恢复将 getter 分配给 temp var,然后检查是否为 null,如果不调用我的函数?
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.
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
?
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 一起使用吗?
java - AbstractStreamEx.nonNull() 的 Eclipse 外部 Null 注释
考虑以下示例代码。此代码使用 Eclipse@NonNull
和@Nullable
注释来检查null
s。不幸的是,Eclipse 在行上标记了一个错误map(toNonNull)
。
这是错误消息:
Null 类型不匹配(类型注释):需要“Function”,但此表达式的类型为“Function<@NonNull Integer, @NonNull Integer>”
我想在StreamExnonNull()
(或更准确地说AbstractStreamEx)上创建一个 Eclipse 外部注释,nonNull()
以便 Eclipse 知道流中的值不能为空。
这是 Eclipse 外部注释的开始。
我放???
什么?
eclipse - 静态内部类的 Eclipse 外部注释格式是什么?
我正在尝试为静态内部类 Map.Entry 编写一个 Eclipse 外部注释文件。我该怎么做呢?
我在所有外部注释文件所在的文件夹下的子文件夹中Map$Entry.eea
创建了一个名为的文件。java/util
这是该文件的内容。
entry.getValue()
Eclipse 仍然在以下代码中标记警告:
警告是:
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 上。