我从Apache Avro GenericRecord
中提取变量值,因此我的String变量值将变为" null"而不是null。
GenericRecord payload = decoder.decode(record.value());
String userid = String.valueOf(payload.get("userId"));
// here userid is null string as "null"
System.out.println(Strings.isNullOrEmpty(userid));
因此" null"字符串,我的sysout
打印为false。我如何检查这一点,以便打印出" true" bcoz string是一个空字符串。有没有内置的功能,或者我必须写自己的" .equals"检查?
答案 0 :(得分:1)
"null"
是纯字符串类型,只需使用String
类型的API:.equals("null")
即可。
答案 1 :(得分:1)
您可能使用"null"
方法自行生成String.valueOf(...)
字符串。来自String#valueOf
的JavaDoc:
返回: 如果参数为null,则字符串等于“null”;否则,返回obj.toString()的值。
因此,我建议使用以下代码:
GenericRecord payload = decoder.decode(record.value());
boolean isNull = payload.get("userId") == null;
if (!isNull) {
String userid = payload.get("userId").toString();
}
这可以防止因不生成而与"null"
字符串进行比较的问题。