Naming.lookup()做什么?

-1 java casting rmi

我一直在通过一个非常简单的示例来设置远程方法调用应用程序,并且在通过客户端代码时,我无法理解一个代码,如下所示.当然,我的知识缺口,因为我虽然界面不能有对象,除非你使用匿名内部类.所以在下面的代码中我们是如何创建远程接口的对象的.如果我不得不猜测,对我来说似乎是某种类型的铸造.

import java.rmi.*; 
public class HelloClient { 
  public static void main(String args[]) { 
  try { 
    if (args.length < 0) { 
      System.err.println("usage: java HelloClient string …\n"); 
      System.exit(1); 
    } 
HelloInterface hello = (HelloInterface)Naming.lookup("//localhost/Hello");          
Run Code Online (Sandbox Code Playgroud)

最后一行是我无法理解(HelloInterface)部分究竟发生了什么?

use*_*421 5

HelloInterface hello = (HelloInterface)Naming.lookup("//localhost/Hello");
Run Code Online (Sandbox Code Playgroud)
  • Naming.lookup()调用检查在localhost中运行的RMI注册表,以获取名为"Hello"的绑定.
  • 它返回一个Object,必须将其强制转换为您期望的任何远程接口.
  • 然后,您可以使用该对象调用接口中定义的远程方法.

我认为除非你使用匿名内部类,否则接口不能有对象.

我不知道你在这里谈论什么.任何类都可以实现接口.这是相当基本的.

所以在下面的代码中我们是如何创建远程接口的对象的

我们没有.我们将它作为来自注册表的返回值,它由服务器放置.

如果我不得不猜测,对我来说似乎是某种类型的铸造.

无需猜测.这正是它的本质.只有一种类型的类型转换,这就是你编写它的方式.这也是相当基本的.