Wenn existed
und updated
sind beide null
, dann wird das Programm die Schleife erreichen, und existed.keySet()
eine NullPointerException
werfen, das ist, warum Sie die Warnung.
Vor der Schleife sollten Sie eine Bedingung hinzufügen, um sicherzustellen, dass existed
nicht null
ist.
private boolean isEqualCaptions(Map<String, String> existed, Map<String, String> updated) {
if (existed == null && updated != null) return false;
if (existed != null && updated == null) return false;
if (existed != null) {
for (String key : existed.keySet()) {
if (existed.get(key).compareTo(updated.get(key)) != 0) return false;
}
}
return true;
}
schließlich die Bedingung A && !B || !A && B
kann mit dem XOR-Operator als A^B
vereinfacht werden, so dass die ersten beiden if
Aussagen können kombiniert und vereinfacht werden:
private boolean isEqualCaptions(Map<String, String> existed, Map<String, String> updated) {
if (existed == null^updated == null) return false;
if (existed != null) {
for (String key : existed.keySet()) {
if (existed.get(key).compareTo(updated.get(key)) != 0) return false;
}
}
return true;
}
Was passiert, wenn 'existierte == null && aktualisiert = = null? – shmosel
Wenn sowohl 'existed' als auch' updated' Nullen sind, kann Ihr Code möglicherweise nicht funktionieren. –