Java null != something和something != nullJava 之间是否存在差异?如果存在差异,那么我应该使用哪一个?为什么?
好吧,这是一个简单的问题,我没有任何问题,但我只是想确定.如果我做这样的事情,这是正确的吗?
if (person != null && person.getAge > 20) {...}
Run Code Online (Sandbox Code Playgroud)
我可以这样做吗?在同一行上进行null检查和对象访问?它是否正确?或者我必须在null检查语句上做一个内部语句,如:
if (person != null)
{
if (person.getAge() > 20) {...}
}
Run Code Online (Sandbox Code Playgroud)
imo,第一个声明不会抛出NPE,但我需要专业人士的反馈......
一般来说,我的问题是,对于带有&&的if语句,如果第一个布尔值为false,JVM是否会停止执行if语句,否则它将全部检查?
有一个接收"someObj"的方法,其目的是检查类型Set <>的var ASet,迭代它并用数据库对象替换它的对象.为此,我写了以下代码:
if(!CollectionUtils.isEmpty(someObj.getASet())){
someObj.setASet(
someObj.getASet()
.stream()
.map( c -> AService.getExistingA(c.getId()))
.collect(Collectors.toSet())
);
}
Run Code Online (Sandbox Code Playgroud)
这样做的目的,但我真的不满意它的可读性.
Optional.ofNullable(someObj.getASet())
.ifPresent( ASet-> someObj.setASet(
ASet.stream()
.map( c -> AService.getExistingA(c.getId()))
.collect(Collectors.toSet())
));
Run Code Online (Sandbox Code Playgroud)
现在它看起来更不易读,你能推荐更好的方法吗?我认为最糟糕的问题是someObj.setASet,它看起来很奇怪,是否有任何功能方式可以在收集后替换该对象?
我正在尝试检查Swift中是否存在变量(或更确切地说是数组的特定索引)。
如果我用
if let mydata = array[1] {
Run Code Online (Sandbox Code Playgroud)
如果索引具有值,则会出现错误,如果索引没有值,则会崩溃。
如果我用
if array[1] != nil {
Run Code Online (Sandbox Code Playgroud)
我收到编译器警告和/或崩溃。
本质上,我只是试图获取命令行参数(可以是任何文件名)并检查是否包含了这些参数。我见过的所有命令行参数示例都使用switch / case语句,但是要检查已知文本,而不是更改文件名。
我仍然在Xcode中使用以下内容获取索引超出范围错误:
if arguments.count > 1 {
var input = arguments[2]
} else {
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
在.NET中依赖&&短路安全吗?
我不确定如何正确地标出问题的标题,但用一行代码解释起来非常简单:
if (someObject == null || someObject.someProperty)
...
Run Code Online (Sandbox Code Playgroud)
我能这样做吗?或者这一个:
if (someObject != null && someObject.someProperty)
...
Run Code Online (Sandbox Code Playgroud) I want to add a null check to my ternary operator which checks on a Boolean isValue:
public String getValue() {
return isValue ? "T" : "F";
}
Run Code Online (Sandbox Code Playgroud)
My task is:
What if the Boolean(object) return null? Add a boolean check and return "" (empty String in case if its null).
Note that isValue is a Boolean, not boolean.
在同一行上检查null和取消引用是否存在任何危险?
如果myObj实际上为null,那么此代码将如何表现?
不同语言处理此类情况(例如C#与Java)的方式是否有所不同
例如,如下所示
if(myObj != null && myObj.someProp == "Test")
{
//...
}
Run Code Online (Sandbox Code Playgroud) 我想使用LINQ检查myList!= null,然后执行Where。
我知道我会写
if (myList != null { myList.Where(p => p.x == 2 && p.y == 3); }
但我想使用: myList?.Where(p => p.x == 2 && p.y == 3);
这样行吗?
如果没有,您还知道其他哪些优雅的解决方案?
val map = mapOf(
'a' to 1,
'b' to 2,
'c' to 3
)
val c = 'a'
if (c in map) {
println(map[c] + 1)
}
Run Code Online (Sandbox Code Playgroud)
在简单的代码存根中,Kotlin 编译器不允许我在println. 它向我大喊并发出以下警告:
Operator call corresponds to a dot-qualified call 'map[c].plus(1)' which is not allowed on a nullable receiver 'map[c]'.
这让我发疯,我不想让它!!安静下来。
retList.sort((comp1, comp2) ->
compartmentOrderMap.get(comp2.getCompartment()).compareTo(compartmentOrderMap
.get(comp1.getCompartment())));
Run Code Online (Sandbox Code Playgroud)
I want to add a null check before comparing. How can I do that?
retList.sort((comp1, comp2) ->
if(compartmentOrderMap.get(comp2.getCompartment()) != null && compartmentOrderMap.get(comp1.getCompartment()) != null)
compartmentOrderMap.get(comp2.getCompartment()).compareTo(compartmentOrderMap
.get(comp1.getCompartment()));
);
//I want to do something like this
Run Code Online (Sandbox Code Playgroud)
我想知道这两个 if 语句之间的性能是否存在差异:
if(myObject != null && myObject.someBoolean)
{
// do something
}
if (myObject?.someBoolean ?? false)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
如果性能存在差异,支持哪种方法以及为什么?
编辑: 这不是我的应用程序的瓶颈,我并不是试图过度优化,我只是好奇。
null-check ×11
java ×5
c# ×4
java-8 ×2
arrays ×1
if-statement ×1
kotlin ×1
linq ×1
list ×1
optimization ×1
performance ×1
swift ×1
wrapper ×1