我正在设置Intellij环境,并且想知道如何为以下项打开Nullable警告:

Map<String, String> simpleMap = new HashMap<>();
String thisWillBeNull = simpleMap.get("key");
int l = thisWillBeNull.length();  //<-- how do I get a Nullable warning here?

最佳答案

IntelliJ的无效性分析很有用,但有局限性。它对地图的处理较弱。

如果希望获得有关使用映射的代码的保证,则可以使用Nullness Checker,其中包括map key analysis
它不是IntelliJ内置的,但是您可以integrate it with IntelliJ或将其作为单独的工具运行。

给出以下代码:

import java.util.HashMap;
import java.util.Map;

public class MapGetTest {
  void m() {
    Map<String, String> simpleMap = new HashMap<>();
    String thisWillBeNull = simpleMap.get("key");
    int l = thisWillBeNull.length();
  }
}


您可以运行以下命令:

javac -processor nullness MapGetTest.java


结果是:

MapGetTest.java:8: error: [dereference.of.nullable] dereference of possibly-null reference thisWillBeNull
    int l = thisWillBeNull.length();
            ^
1 error

10-06 14:49