我正在尝试在 Java 中使用带有 SSL 的自定义 SocketImpl。因此,我需要设置 ServerSocket 的套接字工厂。我现在注意到它是静态的,这给我带来了一些麻烦,因为我想为它提供一些在每个 ServerSocket 实例中不同的参数。有谁知道使它成为静态的原因?对我来说,这感觉像是一个不必要的约束,只会在你的应用程序中引入更多的全局状态。
更新 为什么这很麻烦似乎有些困惑。这造成的问题是它迫使我在整个应用程序中使用同一个工厂。如果我想在一个地方使用默认的 SocketImpl 而在另一个地方使用自定义的怎么办?如果不求助于一些丑陋的反射黑客就无法做到这一点,因为工厂一旦设置就无法更改。我也不能让我的工厂创建默认实现,因为 SocksSocketImpl 是包私有的。