标签: null-check

Java字符串null检查!= null或!str.equals(null)?

在java中检查非空值的最佳方法是什么.

String query ="abcd";
Run Code Online (Sandbox Code Playgroud)

query != null VS !query.equals(null).

哪个更好?为什么?

java string null null-check

4
推荐指数
2
解决办法
4万
查看次数

kotlin逆布尔安全铸造

假设我有一个对象Response.现在我想检查一个布尔变量,成功,在Response下并做一个早期返回是响应不成功.

if(response == null || !response.success){
   return;
} //Java version
Run Code Online (Sandbox Code Playgroud)

现在我想使用Kotlin的null安全检查,如下所示

if(response?.success ?: true){
    return
}
Run Code Online (Sandbox Code Playgroud)

如果我没有错,如果响应或成功为null,我们将在if条件内返回true.但是,如果response.success不为null且等于true,我们仍将从函数返回,这不是我想要的.我该如何纠正这种情况?

null-check kotlin kotlin-null-safety

4
推荐指数
1
解决办法
1065
查看次数

Java 11 中的高效空检查

我需要使用对象中 3 个级别的 getter。

response.getServiceError().getErrorCode()
Run Code Online (Sandbox Code Playgroud)

一个或多个对象可能为 NULL。现在,我正在这样做

if (response != null && response.getServiceError() != null && response.getServiceError().getErrorCode() != null && response.getServiceError().getErrorCode().equals("errCode123")) {
     //doSomething;
}
Run Code Online (Sandbox Code Playgroud)

有没有更好和/或优雅的方式来构建 if 条件?

java null null-check java-11

4
推荐指数
1
解决办法
1448
查看次数

Optional.ofNullable() 和 `Optional.of() 之间有什么区别

首先我知道这两种方法的区别。

  • Optional.of:用于保证不存在null,如果输入null,则nullPointException

  • Optional.ofNullable: 可能为空,也可能不为空。用来灵活应对。

那么,如果我加上orElseThrow(() -> new NullPointerException("null data"))这个,结果会是一样的吗?

我想抛出带有显式内容的错误。

所以我得到Optional.ofNullable(data).orElseThrow(() -> new NullPointerException("null data")))

将其用作这是无意义的行为吗?

Optional.of(data).orElseThrow(() -> new NullPointerException("null data")))

我认为这也是可能的,但我只是用来ofNullable()使代码看起来一致。

总结一下,到底如果加上的话结果还是一样orElseThrow(nullPoint)ofofNullable

那么反而of.orElseThrow更好呢?

java nullable java-8 null-check option-type

4
推荐指数
1
解决办法
9634
查看次数

检查空值的性能影响

谁能告诉我在 c# 中检查对象或对象的属性是否为空的性能成本是多少?我正在开发一个 ASP.NET MVC 应用程序,该应用程序正在模型中完成空检查,然后在视图中再次完成。我觉得这太过分了,但如果没有真正的性能下降,那么我不认为这样做有什么害处。

c# asp.net-mvc performance null null-check

3
推荐指数
1
解决办法
4484
查看次数

如何使用redis-scripto和redis DB在LUA中执行null \nil检查?

我正在使用scripto在node.js中编写脚本,我正在尝试对数据库中的值进行nil检查:这里是js代码(用于节点) -

var redis = require("redis");
var redisClient = redis.createClient("6379","localhost");
var Scripto = require('redis-scripto');
var scriptManager = new Scripto(redisClient);

var scripts = {
    'test':'local function test(i) '+
    'if (i==nil) then return i end '+
    'local ch = redis.call("get", i) '+
    'if (ch==nil) then return ("ch is nil") '+
    'else return "1" '+
    'end end '+
    'return (test(KEYS[1]))',
};

scriptManager.load(scripts);
scriptManager.run('test', ["someInvalidKey"], [], function(err,result){
    console.log(err || result);
});
Run Code Online (Sandbox Code Playgroud)

但在if语句中我无法进入"ch is nil" ...任何帮助?

null lua redis null-check node-redis

3
推荐指数
1
解决办法
5500
查看次数

方法调用中的C#null检查链

我想下面的方法调用链.

void DoSomething()
{
    ObjectA a = CreateA();
    if (a != null)
    {
        a.Foo();
    }
}

ObjectA CreateA()
{
    ObjectB b = CreateB();
    if (b != null)
    {    
        ObjectA a = b.ToA();
        return a;
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

如果方法调用深度变深,则空检查将更加重叠.对此有什么好的解决方案吗?

改性

我改变了示例代码.它无法解决我将CreateA更改为构造函数的问题.问题是只有不必要的空检查链接重叠.

void SetImage()
{
    UISprite image = GetSprite();
    if (image  != null)
    {
        image.spriteName = "hat";
    }
}

UISprite GetSprite()
{
    UISprite image = GetComponent<UISprite>();
    if (image  != null)
    {   
        image.width = 100;
        image.height = 100;
        return image;
    }
    return …
Run Code Online (Sandbox Code Playgroud)

c# null-check

3
推荐指数
1
解决办法
1654
查看次数

具有供应商参数性能的Java 8 requireNonNull方法

Java 8中添加了带有Objects.requireNonNull的方法Supplier,但是我不确定声明的性能改进是什么:

尽管这在非null情况下可能会带来性能优势,但是在决定调用此方法时,应注意创建消息提供者的成本要比直接创建字符串消息的成本要低。

带String的方法如果不为null则忽略参数:

public static <T> T requireNonNull(T obj, String message) {
    if (obj == null)
        throw new NullPointerException(message);
    return obj;
}
Run Code Online (Sandbox Code Playgroud)

我发现了JDK-8011800:添加java.util.Objects.requireNonNull(T,Supplier)

在JDK 7中,java.util.Objects包括几种检查null的方法,其中包括一种方法,该方法接受一条消息以返回是否找到null。对于JDK 8中的lambda,要包括的另一个变体是requireNonNull方法,该方法采用字符串提供程序而不是字符串。因此,对于非null情况,可以避免创建字符串消息的成本。请注意,lambda捕获的费用可能会为非零。

有注释表示对性能没有影响:

非零捕获成本确实让我担心。我担心它会经常消除使用供应商的任何优势。 2013/09/04

我发现了其他问题,但没有提到(为什么)发送String参数会降低性能

它专用于lambda表达式/流用法吗?

java string object java-8 null-check

3
推荐指数
1
解决办法
362
查看次数

为什么 Kotlin 在反编译为 Java 时会进行空检查声明一些未使用的变量?

我在 JVM 11 上使用 Kotlin 1.5.20 做了以下操作(AdoptOpenJDK build 11.0.4+11)

通常在 Kotlin 中,我会执行偏向x?.let {}x?.run {}超过if(x != null) {}. 我将这三种方法反编译为 Java,以了解我最喜欢的方法是否会引入任何类型的低效率。反编译这个 Kotlin 代码

class Main {
    fun main1(x: String?){
        x?.run { println(this) }
    }

    fun main2(x: String?){
        x?.let { x1 -> println(x1) }
    }

    fun main3(x: String?){
        if (x != null){
            println(x)
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

我得到这个 Java 代码

@Metadata(
   mv = {1, 5, 1},
   k = 1,
   d1 = {"\u0000\u001a\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0003\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002J\u0010\u0010\u0003\u001a\u00020\u00042\b\u0010\u0005\u001a\u0004\u0018\u00010\u0006J\u0010\u0010\u0007\u001a\u00020\u00042\b\u0010\u0005\u001a\u0004\u0018\u00010\u0006J\u0010\u0010\b\u001a\u00020\u00042\b\u0010\u0005\u001a\u0004\u0018\u00010\u0006¨\u0006\t"},
   d2 = {"Lcom/cgm/experiments/Main;", "", "()V", "main1", …
Run Code Online (Sandbox Code Playgroud)

java null null-check kotlin kotlin-null-safety

3
推荐指数
1
解决办法
88
查看次数

是否有更短的方法来编写此内联 if?

嘿伙计们有没有更短的方法来写这一行。

int objectID = jsonObject != null && jsonObject.ObjectID.HasValue && jsonObject.ObjectID.Value > 0 ? jsonObject.ObjectID.Value : defaultObject.ObjectID;

//jsonObject.ObjectID is int?
Run Code Online (Sandbox Code Playgroud)

你可以使用空合并来检查空值和> 0吗?

c# null-coalescing-operator null-check

2
推荐指数
1
解决办法
74
查看次数