繁体   English   中英

处理主机名包含underscore()时java.net.URL和java.net.URI之间发生冲突,这是一个错误吗?

[英]Conflicts between java.net.URL and java.net.URI when dealing with hostname contains underscore( ), is it a bug?

有人将JDK的一个错误替换为错误,说该主机名包含下划线(_)是无效的url。 以下是回应。 参考链接

RFC 952不允许在主机名中使用_下划线。 因此,这不是错误。 我也找不到实际用法的例子。 因此,除非可以提出一个特别有说服力的案例,否则我将关闭不是错误。

我想知道,如果带下划线的主机名无效, 为什么结果在java.net.URI和java.net.URL之间不同 是错误还是功能? 这是例子。

java.net.URL url = new java.net.URL("http://test_1.tanglei.name");
System.out.println(url.getHost()); //test_1.tanglei.name
java.net.URI uri = new java.net.URI("http://test_1.tanglei.name");
System.out.println(uri.getHost()); //null 

它是错误还是功能?

我认为审稿人不会完全理解您在谈论两个不同的URI构造函数和4 arg URL构造函数之间的三向不一致。 (您的错误报告并不能准确指出与您有关的不一致之处。)他将其视为报告,它表示URL和URI之间存在2种不一致的情况。

审查有些简洁,但审查者的观点是URL构造函数的行为符合其规范 由于规范中明确指出不执行任何验证,因此这不是代码中的错误。 这是不争的。

他没有明确说明的是,解决这种不一致(通过更改URL类规范)会破坏许多人20岁以上的Java代码。 那将是一个非常糟糕的主意。 不会发生的

所以……这种矛盾是一个“特征”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM