为什么在下面的情况下 getPersonal() returns null?

Why getPersonal() returns null in the below case?

我一直在 Java 中使用 InternetAddress。我使用了下面的代码片段。

InternetAddress internetAddress = new InternetAddress("king<***@***.com>");
System.out.println(internetAddress.getPersonal());

在这种情况下它returns国王作为输出。

InternetAddress internetAddress = new InternetAddress(",<***@***.com>");
System.out.println(internetAddress.getPersonal());

在这种情况下,没有异常,但返回null。

这里的逗号没有用双引号括起来,那么它是如何被接受的,为什么它returns null 而不是逗号?

谢谢。

根据 InternetAddress 解析函数文档判断 addressList 参数被解释为逗号分隔的地址字符串列表,很可能 java 将其视为两封电子邮件,一封无效(空)地址,以及没有个人地址的地址。

您的构造函数调用 new InternetAddress("xyz") 然后直接传递给解析,如您所见 here

逗号有特殊处理,它会尝试将逗号检测为地址列表,您可以看到 here

相关文档:https://docs.oracle.com/javaee/6/api/javax/mail/internet/InternetAddress.html#parse