【问题标题】:java Can i create a string that is defined as null in one line?java 我可以在一行中创建一个定义为null的字符串吗?
【发布时间】:2012-12-14 11:42:09
【问题描述】:

我想将字符串参数作为“null”传递

但是,这是针对构造函数中的超级方法的 - 所以我不能这样做

String s = null;
super(s);

我不能这样做

super(null)

因为这将导致模棱两可的方法调用。我也不希望有一个为此为空的实例变量,这似乎不优雅。

有没有办法创建一个空字符串?

注意

 new String(null) //does not compile

【问题讨论】:

  • super((String)null)
  • @AndrewThompson:这应该是一个答案(在你看来很简单)。
  • @JBNizet Ehh..(耸耸肩)我有点晚了。现在被别人当成答案了,好像是多余的。

标签: java string constructor super


【解决方案1】:

就这样做

super((String)null);

【讨论】:

    【解决方案2】:

    CodeMan 发布了正确答案,另一种解决方案, 远离 null,并考虑使用空字符串进行初始化

    super("");
    

    这将避免以后进行空检查。

    【讨论】:

    • 这是真的 - 虽然有一个空检查,如果我们确实想用非空和空字符串做一些事情,我想我会远离这个。
    • this conversation 我喜欢字符串连接的错误,但我也喜欢 null 不在堆上的事实(尽管在 java 中效率似乎有点毫无意义)。
    【解决方案3】:

    您遇到的问题是编译器不知道应该使用哪个构造函数。

    String 有各种单参数构造函数。

     String(String)
     String(char value[])
     String(StringBuffer)
     String(StringReader)
    

    当您使用String(null) 时,不知道应该使用哪个。

    请记住,当您使用 null 作为参数(在方法或构造函数中)时,您应该始终将其转换为所需的类型。

    new String((String) null);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-29
      • 2020-11-28
      • 2010-10-06
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 2019-12-12
      • 1970-01-01
      相关资源
      最近更新 更多