LocateRegistry.createRegistry() return 是什么对象?

What object does LocateRegistry.createRegistry() return?

我是 Java 的新手,我想知道这里发生了什么。

有一个 class RMIServer,它在其构造函数中创建一个新的注册表。

public class RMIServer {
    private static final int PORT_NUMBER = 1099;
    private Registry registry = null;

    public RMIServer() {
        registry = LocateRegistry.createRegistry(PORT_NUMBER);
    }
}

现在,当我查看 LocateRegistry classes 的 createRegistry() 方法时,我可以看到它 returns 一个接口 Registry

public final class LocateRegistry {

    private LocateRegistry() {
        // compiled code
    }

    public static Registry createRegistry(int i) throws RemoteException {
        // compiled code
    }
}

通常我认为应该返回一个 class,但即使我查看 javadoc,我也无法找到将要返回的 class 对象。

代码正常工作,现在我只是想知道:这是如何工作的,以及我自己解决这个问题的最佳方法是什么? (授人以鱼,...)

根据 source code of OpenJDK,它 returns 是 sun.rmi.registry.RegistryImpl 的一个实例,它是一个内部 class:

public static Registry createRegistry(int port) throws RemoteException {
    return new RegistryImpl(port);
}

public Java文档通常不涵盖此类内部 classes,它们可能会从 Java 平台的一个实现更改为另一个。因此,另一个 JRE 实现理论上可以使用不同的 class 作为 Registry 实现。

有关以 sun.* 开头的此类 class 的详细信息,请参阅 this page