“空”是否应该是某个属性的有效值?

时间:2019-04-15 09:07:59

标签: java

我有一个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

该值将附加到格式化的密钥上以写入文件。

5 个答案:

答案 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"是否可以等同于nullnull是否可以等同于""完全是特定于域的。如果您的应用程序可以使用它,那么它可以使用它。故事结束。

但是"null"null""的概念在逻辑上是完全不同的,并且您正在处理接近代码级的配置(属性文件是由通常了解以下内容的人编辑的编码)。通过使这些相等,您和每个人都很难理解代码,因为他们需要了解所选非标准特殊情况的工作方式,从而增加代码的认知负担。

因此,如果您想编写良好的代码,则永远不要将"null"等同于nullnull等同于空字符串。

为什么您需要知道是否存在没有值的键?在键值属性的上下文中没有意义,因为如果键没有值,则键值对不存在。 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
}