我需要使用java.net.url类的构造函数来创建基于端口号的URL。为此,我使用了下面的构造函数:
我的问题在于构造函数的文档说明,在构造函数上方有一个描述,该描述是“指定{@code -1}的{@code port}表示URL应使用协议的默认端口。”正如我所提到的,我不想使用默认端口号。如果这种情况发生,我怎样才能只用这个构造函数创建URL呢?
顺便说一下,我知道我可以只使用字符串版本,但我不想编写两个新URL来做到这一点。基本上,我想写这样的东西:
public URL(String protocol, String host, int port, String file){}
。我需要创建两个不同的URL;如果端口是80,则需要忽略端口,否则URL应包含端口号。我无法将端口号发送为空值,但可以使用值-1。当我使用-1作为端口时,它将创建没有端口的URL。我的问题在于构造函数的文档说明,在构造函数上方有一个描述,该描述是“指定{@code -1}的{@code port}表示URL应使用协议的默认端口。”正如我所提到的,我不想使用默认端口号。如果这种情况发生,我怎样才能只用这个构造函数创建URL呢?
顺便说一下,我知道我可以只使用字符串版本,但我不想编写两个新URL来做到这一点。基本上,我想写这样的东西:
new URL(scheme, serverName, serverPort == 80 ? -1 : serverPort, contextPath); //如我所提到的,根据URL构造函数的文档,-1会得到默认的端口号,但在代码中并不是这样。
等待您的建议。谢谢。
编辑
new URL(scheme, serverName, serverPort == 80 ? null: serverPort, contextPath);
port
是我查看的URL
实现中的一个int
字段。这意味着它不能为null
。-1
相当于“未指定”(也被解释为“使用默认端口”和“在外部形式中不打印端口号”)。没有第三个状态。 - Joachim Sauer