问题标签 [non-nullable]
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.
vb.net - 如何在 VB.NET 中将类型从可空转换为不可空?
现在,我有可以为空的泛型类型,我可以检查它是否可以为空。但是,我找不到从中获取不可为空类型的方法。这是我想做的事情:
例如,如果 nullableType 是 Date?,我希望“GetNonNullableType”函数返回 Date。如果是 Integer?,该函数将返回 Integer。
c# - 带有 switch 的类声明会警告代码在 if 语句中是 int 始终返回 true,但代码的 false 情况也适用
使用自定义类时,有一个接收 int 的开关。然后,开关会填写一些案例有数字的类,而有些则没有。int 几乎可以在应用程序中的任何位置范围内,但有些情况下没有。当查看 newClass 时,用户需要查看哪些没有编号。下面的代码工作正常,除了需要删除一个警告:“比较值类型newClass.num
与 null 的结果是true
”和“检测到无法访问的代码”语句的错误部分。
是否有可用于测试类的 nullReferenced 部分的方法或最佳实践?这种情况称为什么(即不可为空的引用,nullReference 测试)(...因为我不知道要搜索什么)?
ios - 如何为按钮分配非空属性?
我在 myviewcontroller.h 文件中声明 UIButton 的操作,如下所示
但我可以看到类似的警告Pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)
。我该如何解决这个问题?
谢谢
c# - C# Nullable vs Non-Nullable DateTime 标签
这是一个关于日期和时间的史诗故事。
Created 是一个不可为空的 DateTimeOffset 变量 Updated 是一个可为空的 DateTimeOffset 变量
两者的值都已正确创建,存在于数据库中并已传递给视图。因此,这两个值都应该在以下范围内可用:<div class="row">@Html.Label(Model.Created.Value.ToString("MMMM, dd yyyy hh:mm tt"))</div>
<div class="row">@Html.Label(Model.Updated.Value.ToString("MMMM, dd yyyy hh:mm tt"))</div>
然而,第二个(更新)是好的,第一个(创建)会出现错误:“ValueExtensions.Value(HtmlHelper,string)'是一种方法,在给定的上下文中无效”
它发生在 .value 部分。为什么一个可以,另一个不行?变量的可空性与可接受性有什么关系?或使该方法“在给定的上下文中无效”?
我的模型:
java - Android:尽管有@NonNull,但出现 NullPointerException
我正在使用注释来确保参数不为空,假设这会导致编译器检查。
但是,通过运行此代码,我得到 NullPointerException 正是在这一行
那么注释的意义何在?
更晦涩的是,如果我像这样写额外的支票
Android Studio 警告我检查没用!
更新:完整的调用堆栈:
java - 空分析注释包之间有什么区别?
我应该使用哪个@NotNull Java 注释?已经过时并且有点基于意见。从那时起,Java 8 和更新的 IDE 一起出现了。
虽然 Java 8 允许通过集成JSR 308来进行类型注释,但它没有附带任何注释。来自JSR 308 解释:Josh Juneau 的 Java 类型注释:
JSR 308,Java 类型的注释,已作为 Java SE 8 的一部分被合并
。...
编译器检查器可以被编写来验证带注释的代码,当代码不满足某些要求时,通过生成编译器警告来强制执行规则。Java SE 8 不提供默认的类型检查框架,但可以编写自定义注解和处理器来进行类型检查。还有许多类型检查框架可以下载,它们可以作为 Java 编译器的插件来检查和强制执行已注释的类型。类型检查框架包括类型注释定义和一个或多个与编译器一起用于注释处理的可插入模块。
仅考虑提供至少某种@CanBeNull
and的解决方案@CannotBeNull
,我发现了以下信息(可能是错误的):
- Eclipse 的 JDT 空值分析的
org.eclipse.jdt.annotation
. 其他 IDE 有各自的软件包。使用 JSR 308,并且仍然支持 Java 8 之前的注释。 - FindBug的
javax.annotation
. 使用休眠的JSR 305,它似乎没有使用 Java 8 的类型注释。尽管它没有集成到 Oracle 的 API 中,但由于某种原因它仍然使用javax
域,这意味着它确实如此。 - 检查器框架的
org.checkerframework.checker.nullness
. 使用 JSR 308。 - JavaEE 的
javax.validation.constraints
. 不知道有什么用,@CanBeNull
反正也没有。
有些用于静态代码分析,有些用于运行时验证。
上述选项之间的实际区别是什么?是否有(将会有)一个标准,还是每个人都可以编写自己的分析框架?
objective-c - 在 Objective C 的某些情况下如何使用 nonnull
我已经阅读了许多关于可空性的帖子,但我无法终生让我的警告消失。这里有几个例子:
其中每一个都会收到此警告:“从可空指针 'NSData * _Nullable' 隐式转换为不可空指针类型 'NDSata* _Nonnull'
用 NS_ASSUME_NONNULL_BEGIN/End 包围代码也不起作用。
我尝试了多种(非空)__nonnull 等组合,但似乎无法找到关键字的神奇位置来使警告消失。
java - IntelliJ IDEA @ParametersAreNonnullByDefault 适用于所有子包
我使用 IntelliJ 的空值检查机制来防止空指针崩溃。我已使用此答案成功将所有 Java 方法参数默认设置为 @NonNull。
在创建用于在 Java中定义包注释的package-info.java之后。作为该包的直接后代的所有 java 文件在我的 Android Studio 项目中都有带有默认 @NonNull 参数的方法。
明显的问题是我需要为该包中的所有 Java 类定义@ParametersAreNonnullByDefault,即包括所有子包。
如何定义 @ParametersAreNonnullByDefault 以便它向下传播到所有子包 java 文件?我希望我的所有内部代码的方法默认都用 @NonNull 注释。
java - 如果 @Nullable / @NonNull 参数使用不正确,则引发编译错误
我正在使用 com.android.support:support-annotations 库将 @Nullable 和 @NonNull 注释添加到我的项目中。
在 Android Studio 中将 Editor->Inspections“常量条件和异常”和“@NonNull/@Nullable 问题”检查切换到“错误”级别后,我能够在我的代码中看到 @Nullable 和 @NonNull 参数的错误用法:
不幸的是,即使 IDE 将其中一行标记为错误,项目编译时也没有构建错误(我使用的是标准的方式来构建带有 gradle 的 android 项目)。
有没有办法让 gradle 在上面列出的代码中抛出编译错误?
java - Kotlin - 可空字段的非空 getter
我是 Kotlin 的新手,我尝试将一个小型 Java 项目重新设计为这种新语言。我在我的项目中使用 mongodb 并且我有一个类,例如:
由于构造函数为空,我必须将id
字段标记为可为空(var id: ObjectId?
)。当我尝试从另一个类访问此字段时,我必须使用非空检查:thePlayer.id!!
。但是我的应用程序的逻辑是该id
字段永远不会为空(mongo 创建一个 Player 实例并立即设置 id 字段)。而且我不想到处进行非空检查。
我试图制作一个非空吸气剂,但它没有编译:
我还可以为 id 制作一些存根并在构造函数中使用它,但这看起来像一个肮脏的 hack:
那么有没有办法解决这个问题呢?