用socket在网络上读取一个类的文件,然后加载它就行了

解决方案 »

  1.   

    肯定是可以的,关键是首先你要想办法得到这个类,然后用Class.forName("")之类的方法加载就行了;或者使用对象序列化方法还原。
      

  2.   

    现有一个实现接口MyInterface的类mypackage.MyClass
    Class c=Class.forName("mypackage.MyClass");
    MyInterface mi=(MyInterface)c.newInstance();要求mypackage.MyClass有public、无参数的构造方法(如果有参数,参考Class这个类的文档)
      

  3.   

    采用URLClassLoader加载远程类文件即可,以下是一个简单实例:
    1.首先写一个类放置于远程的主机,比如ftp上,代码如下:
    /*
     * ********************************************
    */
    import javax.swing.JOptionPane;public class Test { public static void main(String[] args) {
    Test test = new Test();
    test.showGreeting("hello");
    }

    public Test(){
    }

    public void showGreeting(String greeting){
    JOptionPane.showMessageDialog(null,greeting);
    }
    }
    /*
     * ********************************************
    */将此类编译后置于ftp主机上,如:ftp://192.168.1.1102.在本地编写一个调用类,示例代码如下:/*
     * ********************************************
    */
    import java.net.*;
    import java.lang.reflect.*;public class FtpGreeting { public static void main(String[] args) {
    FtpGreeting fg = new FtpGreeting();
    }

    public FtpGreeting(){
    try{
    URL url = new URL("ftp://192.168.1.110");
    URL[] urls = new URL[]{url};
    URLClassLoader ucl = new URLClassLoader(urls,this.getClass().getClassLoader());
    Class cls = ucl.loadClass("Test");
    Method greeting = cls.getMethod("showGreeting",new Class[]{String.class});
    greeting.invoke(cls.newInstance(),new Object[]{new String("hi! how are you!")});
    }catch(Exception e){
    e.printStackTrace();
    }
    }
    }/*
     * ********************************************
    */这样,在本地运行的时候就会加载ftp上的类文件了
      

  4.   

    更正一下,上面调用类中的:URL url = new URL("ftp://192.168.1.110");应该改为: URL url = new URL("ftp://192.168.1.110/");