为什么 ServerSocketChannel#bind 需要 API 级别 24?

Why does ServerSocketChannel#bind require API level 24?

我正尝试在 Android(最小 API 21)上打开 NIO 服务器套接字通道,如下所示。

ServerSocketChannel.open().also {
    it.bind(InetSocketAddress(0))
}

但是上面的代码给我一个错误,说 - Call requires API level 24。理论上,我可以使用 ServerSocket 并收工,但我的客户端代码使用 SocketChannelByteBuffer 等,将两者混合感觉是一个糟糕的设计!

另一件让我感到困惑的事情是,我可以 open() 在最低 API 级别 21 但不能 bind() 在 API 级别 21,然后呢它有什么用?

现在,我找到了另一种绑定服务器套接字的方法,并且仍然使用 ServerSocketChannel 而无需将 API 级别更改为 24。

ServerSocketChannel.open().also {
    it.socket().bind(InetSocketAddress(0))
}

我仍然对在 API 24 级才添加 ServerSocketChannel#bind 的决定感到困惑。