我有一个key = value属性,然后将其写入文件。如果存在键,但该值为空或null,则将其另存为key =“”。现在,文字字符串“ null”是否曾经是键的有效属性值?在我的代码审查中有人问到了哪个问题,但我认为将其视为有效是不正确的做法,因为系统会将空字符串视为空值。
目前,如果该属性为null或“ null”,则该属性的格式为空字符串
if (key != null && !key.trim().isEmpty() && key.startsWith("-D")) {
if (value == null || value.equals("null")) {
value = "";
}
//Other code
该值将附加到格式化的密钥上以写入文件。
答案 0 :(得分:0)
字母字符串“ null”不应被视为与null引用相同。这意味着,如果您的系统允许“ null”为有效的属性值,则只要您的系统没有明确声明,就将其视为任何其他有效值。
答案 1 :(得分:0)
取决于您的代码逻辑,但是NULL和空字符串不同。使用HashMap时,您可以设置NULL键,有时使用它会很有帮助。如果您确定所使用的Map不能具有NULL键,则无需担心。 NULL和字符串值“ null”之间也有区别。取决于对象的性质以及代码中的逻辑。
答案 2 :(得分:0)
据我了解,您对NULL概念有疑问。在您当前的代码中,如果有人输入与NULL概念不同的字符串“ null”,则您的值将为空。简短的答案:是的,文字字符串“ null”可以是有效的属性,但这取决于项目背后的逻辑。
答案 3 :(得分:0)
这可能应该已经发布到http://codereview.stackexchange.com/
但是,"null"
是否可以等同于null
和null
是否可以等同于""
完全是特定于域的。如果您的应用程序可以使用它,那么它可以使用它。故事结束。
但是"null"
,null
和""
的概念在逻辑上是完全不同的,并且您正在处理接近代码级的配置(属性文件是由通常了解以下内容的人编辑的编码)。通过使这些相等,您和每个人都很难理解代码,因为他们需要了解所选非标准特殊情况的工作方式,从而增加代码的认知负担。
因此,如果您想编写良好的代码,则永远不要将"null"
等同于null
或null
等同于空字符串。
为什么您需要知道是否存在没有值的键?在键值属性的上下文中没有意义,因为如果键没有值,则键值对不存在。 Java属性的常见用例如下:
# Literal value
key.1=value
# Empty string
key.2=
# Null (commented out means not defined)
# key.3=
答案 4 :(得分:0)
value.equals(“ null”)恰好是一个值,并且不是NULL。Java中NULL的唯一键为“ NULL”。 (小写或大写无引号)
请参见下面的代码,它可能会对您有所帮助。
firing
为了检查是否为空,请使用以下代码
extension LeagueSortOptions {
func compare(lhs: LeagueTeam, rhs: LeagueTeam) -> ComparisonResult {
switch self {
// return comparison result for all LeagueSortOptions
}
}
}
// ...
func sort(initialItems: [LeagueTeam], by sortOptions: [LeagueSortOptions]) -> [LeagueTeam]
var sortedItems = initialItems
// depending on needs you may want to reverse sortOptions
for sortOption in sortOptions {
// stableSort would call "compare" internally on sortOption
sortedItems = stableSort(sortOption)
}
return sortedItems
}