Java 为什么整数不';不解决空字符串

Java 为什么整数不';不解决空字符串,java,Java,Integer类包含一些将字符串转换为整数的方法: Integer.parseInt(null)Parameter:String返回:int,所以我希望在这个抛出NPE时参数为null Integer.valueOf(null)参数:字符串返回:整数,所以我希望当参数为null时,它应该返回null。但这个前提是错误的,我想问,为什么没有这样的方法来处理这种情况 null不是整数的有效表示形式Integer.parseInt()要求解析的字符串是整数的有效表示形式 public stati

Integer类包含一些将字符串转换为整数的方法:

  • Integer.parseInt(null)
    Parameter:String返回:int,所以我希望在这个抛出NPE时参数为null

  • Integer.valueOf(null)参数:字符串返回:整数,所以我希望当参数为null时,它应该返回null。但这个前提是错误的,我想问,为什么没有这样的方法来处理这种情况


  • null
    不是整数的有效表示形式
    Integer.parseInt()
    要求解析的字符串是整数的有效表示形式

      public static int parseInt(String s, int radix)
    440                 throws NumberFormatException
    441     {
    442         if (s == null) {
    443             throw new NumberFormatException("null");
    444         }
    
    //它调用Integer.parseInt(Str)返回整数实例

      public static Integer valueOf(String s) throws NumberFormatException
    569     {
    570         return new Integer(parseInt(s, 10));
    571     }
    

    “我可能错了,”胡迪,但这就是你要找的吗

    public Integer valueOf2( String inputString ) {
        return (inputString == null) ? null : Integer.parseInt(inputString);
    }
    

    Sun公司实现Integer(很久以前:)的人员在编写该方法时可能没有想到数据库。除非在处理数据库数据时,或者在少数情况下您试图用null显式表示“未知”,否则null通常是出现严重错误的标志。一般来说,一出现问题就提出异常是个好主意。(a)设计

    如果您曾经花时间查找C中的一个分段错误,这是由于字符串值比您为其提供的内存长(该内存随后重写了一些程序代码或其他数据),那么您将非常清楚在出现错误时不失败是多么糟糕

    自Java1.0时代以来,在Java中与数据库的交互已经变得非常普遍,因此您可能正确地建议应该有一种方法来处理这个问题。Integer是最后一个类,因此如果您构建自己的类似Integer的类,您将失去自动装箱功能,因此这可能需要oracle更改语言


    基本上,你观察到的是目前的情况,有人会付钱让你编写代码:)

    @hudi,这个怎么样


    我从未使用过它,但如果出现转换错误,您似乎可以指定默认值。我知道仅仅为了这个而在你的项目中加入另一个jar是一件痛苦的事情;如果有标准的东西就好了。

    我不同意使用整数,因为我需要处理空值。当我不想要的时候,我使用int。。。你不同意java规范吗?我认为PremGenerError所说的整数是数学实体,而不是
    integer
    类的对象。:)@hudi Integer可以为null,但不能获得null的int表示形式。如何表示空值?如果您想到-1,这种方法在任何负值有意义的领域都是无效的。无论如何,您可以编写自己的parseInt方法。在我的应用程序中,当我们试图解析空字符串时返回-1,但这是我们已经同意的约定(我们,这个特定应用程序的开发人员)。@JonathanDrapeau检查我的编辑。Integer.valueOf()infact调用的Integer.parseInt()Javadoc说:“NumberFormatException-如果字符串不包含可解析的整数”。这就是您得到的吗?这不是您通常需要依赖的行为(在null参数上返回null),因此通常不是问题。如果您确实需要依赖它,只需创建一个实用方法来包装它并以所需的方式处理null?@EdwinDalorzo nope。我的问题是为什么有一些新方法可以处理空字符串。创建if(value==null)return null或retun valueOf(value)非常困难?所以你说你只是想知道它为什么不存在,而不是问如何解决一个技术问题?除了“Java开发人员没有这样做,因为他们没有这样做”之外,没有其他答案。标记关闭。是的,我在注释中写了这个,但我的问题是为什么Integer类中没有这样的方法?