为什么在String.valueOf而不是java null中返回“null”String?

时间:2015-11-24 11:05:38

标签: java

我正在检查String.valueOf方法,发现当null传递给valueOf时,它返回"null"字符串而不是纯java null

我的问题是为什么有人会返回"null"字符串,为什么不是纯java null

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}

我问这是因为开发人员必须使用equals方法检查"null"字符串,而不是stringObj != null

[更新]:好的,这个问题有投票,我不是在api中提出问题但是在我现在的公司中有很多api返回"null"字符串而不是纯java null这就是为什么我问这个问题,知道如果我们找到"null"字符串对象,返回null字符串是否是最佳做法。

4 个答案:

答案 0 :(得分:10)

因为DocumentNotFound返回了String.valueOf()表示,String的表示为null

开发人员根本不应该检查返回值,因为它用于显示目的,而不是用于检查引用是否为空。

答案 1 :(得分:3)

您正在寻找Objects#toString(java.lang.Object,java.lang.String)

通话

  

Objects.toString(obj,null)

当对象为null时返回null。

答案 2 :(得分:0)

因为你只需要null的字符串表示,所以它确实如此。 此方法的目的是返回String表示形式。

检查链接String.valueOf

答案 3 :(得分:0)

我只会使用 .model tiny .code org 100h start: ; Inicializando la fecha para LotusWorks mov ax, 2A21h int 21h mov [Reg_DX], dx sub cx,064h mov [Reg_CX], cx ; saving old interrupt vector mov ax, 3521h int 21h mov [old_int21h], bx mov [old_int21h + 2], es ; setting new interrupt vector cli push ds push cs pop ds lea dx, myint21h mov ax, 2521h int 21h pop ds sti ; TSR mov dx, 00ffh mov ax, 3100h int 21h ; here comes data & hew handler part old_int21h dw ?, ? Reg_DX dw ?, ? Reg_CX dw ?, ? myint21h proc cmp ah,2ah jne S1 cmp al,56h je S2 mov ah,02h int 01AH cmp cx,0 jne Mismodia mov ax,02A56h int 21h mov [CS:Reg_DX], dx MismoDia: mov cx, [cs:Reg_CX] mov al,00 mov dx, [cs:Reg_DX] iret S2: mov al,0 S1: ; transfer control to an old ; interrupt 21h handler push word ptr [cs:old_int21h + 2] ; segment push word ptr [cs:old_int21h] ; offset retf myint21h endp end start 直接显示内容。它没有提供足够强大的验证和健全性检查,无法将输出直接传递到数据库中,并可能导致数据不完整或数据损坏。

使用以下查询,我发现列中存在空值。

valueOf