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。
我是 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。