You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java是否有定义80、443等常用端口号的常量类?

Java中常用端口号的常量定义问题

嘿,这个问题我之前也纠结过!Java标准类库中并没有直接定义80、443、21这类常用协议默认端口的常量。这其实是因为JDK的设计偏向通用基础能力,这类属于特定应用层协议的默认端口,并没有被纳入标准API的常量体系——毕竟像你提到的StandardCharsets.UTF_8这种属于通用基础组件,和协议端口的定位不太一样。

你说的通过URL的getDefaultPort()方法获取,确实是标准库中唯一能间接拿到这些值的路径,但为了个端口号去构造URL对象,确实有点小题大做,太繁琐了。

那怎么解决代码里的魔法数字问题呢?最实用的做法就是自己封装一个简单的工具类,把这些常用端口定义成静态常量,示例代码如下:

public class CommonPorts {
    // HTTP 默认端口
    public static final int HTTP = 80;
    // HTTPS 默认端口
    public static final int HTTPS = 443;
    // FTP 默认端口
    public static final int FTP = 21;
    // 按需扩展其他常用端口
    public static final int SSH = 22;
    public static final int SMTP = 25;
}

之后在代码里直接用CommonPorts.HTTP就清晰多了,还能根据自己的业务需求随时扩展其他端口。

另外提一句,如果你的项目已经引入了第三方工具库(比如Apache Commons Net),里面其实已经预定义了不少这类端口常量,比如DefaultProtocols.HTTP_PORT、DefaultProtocols.HTTPS_PORT之类的,但如果只是为了几个端口号额外引入依赖,反而有点得不偿失,自己写个轻量的工具类反而更省心。

内容的提问来源于stack exchange,提问作者Krzysztof Krasoń

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:09:55