URI-getHost返回null。为什么?

为什么第一个返回null,而第二个返回mail.yahoo.com

这不是很奇怪吗?如果不是,此行为背后的逻辑是什么?

下划线是罪魁祸首吗?为什么?

public static void main(String[] args) throws Exception {

java.net.URI uri = new java.net.URI("http://broken_arrow.huntingtonhelps.com");

String host = uri.getHost();

System.out.println("Host = [" + host + "].");

uri = new java.net.URI("http://mail.yahoo.com");

host = uri.getHost();

System.out.println("Host = [" + host + "].");

}

回答:

如@hsz的评论中所述,这是已知的bug。

但是,让我们调试并查看URI类的源代码。问题出在方法内部:

private int parseHostname(int start, int n)

第一个URI解析失败 if ((p < n) && !at(p, n, ':')) fail("Illegal character in

hostname", p);

这是因为_符号未扫描块内foreseed,它只允许阿尔法,数字和-符号(L_ALPHANUMH_ALPHANUML_DASHH_DASH)。

是的,这尚未在中解决Java 7

以上是 URI-getHost返回null。为什么? 的全部内容, 来源链接: utcz.com/qa/408166.html

回到顶部