你的m_rmtDataServer根本就没有初始化
当然不行了

解决方案 »

  1.   

    用new运算赋啊:
    RemoteDataServer m_rmtDataServer=new RemoteDataServer();
      

  2.   

    在构造器中RemoteDataServer m_rmtDataServer = new RemoteDataServer();
      

  3.   

    你的对象在,new以前,他在内存中是没有位置呢!
      

  4.   

    RemoteDataServer m_rmtDataServer = new RemoteDataServer();
    想必RemoteDataServer这个类已经有构造器了,直接写上面的代码不就行了。有构建好的是什么意思?
      

  5.   

    是不是指自己构造的?
    如果是,也一样要先NEW一下
      

  6.   

    在构造器中RemoteDataServer m_rmtDataServer = new RemoteDataServer();我说的是在你的Device类的构造器中初始化
    比如:
    public Device(){
        RemoteDataServer m_rmtDataServer = new RemoteDataServer();
    }
      

  7.   

    你在那个方法里先构建好了,就先调用那个方法,然后在调用你的m_rmtDataServer,就可以了,如果是在构造函数里先构建好了,就不用先调用了。
      

  8.   

    public class Device{
    ...
    private RemoteDataServer m_rmtDataServer
    ....
    private void setReadAllDB(byte[] data)
    {
    m_rmtDataServer.SendDataToCenter(data);
    }}
    import com.tstar.*;
    import java.io.*;
    import java.net.*;
     
    public class RemoteDataServer extends RemoteServer 
     implements DataSender
    {
      public RemoteDataServer(int port,String name)
      {
        super(port,name);
      }  public void SendDataToCenter(byte[] data)
      {  
      
        System.out.println("ok");   
        for(int i=0;i<getWorkers().size();i++)
        {      
          getWorkers().getWorkerAt(i).sendData(data);
        }   }
       
       
    }
    调用时候出拉问题m_rmtDataServer.SendDataToCenter(data);
    如何改
      

  9.   

    public class Device{
    ...
    private RemoteDataServer m_rmtDataServer = new RemoteDataServer(portNumber,name);
    ....
    private void setReadAllDB(byte[] data)
    {
    m_rmtDataServer.SendDataToCenter(data);
    }}
      

  10.   

    在主类里面我有构建好的,
    RemoteDataServer rmtDataServer=new RemoteDataServer(lIntDataPort,"Remote Data Server");
    请问在Device类中如何使用
      

  11.   

    xuyg (xuyg) ,要明白,如果你不调用RemoteDataServer m_rmtDataServer = new RemoteDataServer(portNumber,name);(不进行new运算),你并没有真正的到一个你可以使用的RemoteDataServer对象!只有,你利用new的到RemoteDataServer的一个实例,内存中才会有你可以调用的对象!
      

  12.   

    这样好像不行吧
    Device类中的RemoteDataServer rmtDataServer是Device的成员
    它并不知道Device会被哪个类所调用,所以也就不存在主类的事情
    除非你的Device是某个类的inner class你可以这样做:
    class Device {
        RemoteDataServer rmtDataServer;
        public void setRemoteDataServer(int port,String name) {
            this.rmtDataServer = new RemoteDataServer(port, name);
        }
    }然后在主类中这样构建:
    Device device = new Device();
    device.setRemoteDataServer(lIntDataPort,"Remote Data Server");
      

  13.   

    我的主类里面已经有一个实例
    emoteDataServer rmtDataServer=new RemoteDataServer(lIntDataPort,"Remote Data Server");
    rmtDataServer.start();
    我想问在device类中怎么样调用这个实例
      

  14.   

    public class Device {
        private void setReadAllDB(RemoteDataServer m_rmtDataServer, byte[] data) {
            m_rmtDataServer.SendDataToCenter(data);
        }
    }
      

  15.   

    不行,我要用rmtdataServer来发送数据,
    private void setReadAllDB(RemoteDataServer m_rmtDataServer, byte[] data)
    这是重新新建立,我需要直接调用
      

  16.   

    private void setReadAllDB(RemoteDataServer m_rmtDataServer, byte[] data)
    这就是直接调用啊
    你把你在主类中构建的RemoteDataServer实例作为参数传递进去就可以了
      

  17.   

    我就是问怎么传,问题的关键,总算到最后一步拉,希望能说具体一点的方法
    怎么将主类中的实例做为参数传到RemoteDataServer m_rmtDataServer中来
    谢谢你的回答,真的感谢你
      

  18.   

    比如说,你的Device类中这样定义了:
    public class Device {
        private void setReadAllDB(RemoteDataServer m_rmtDataServer, byte[] data) {
            m_rmtDataServer.SendDataToCenter(data);
        }
    }那么在你的主类中:
    Device device = new Device();
    device.setReadAllDB(m_rmtDataServer, data);
    //这里m_rmtDataServer就是你在主类中构建的RemoteDataServer对象
      

  19.   

    你把我的类的关系搞混拉,
    主类
    public class StarDataServer
    {
    ......
    private void startServer()
    {   devWorker.addDeviceServiceListener(rmtEventServer);
        devWorker.addRemoteServer(rmtServer) ;
        devWorker.addRemoteServer(rmtDataServer);
        rmtEventServer.start();
        rmtServer.start();
        rmtDataServer.start();
    }RemoteDataServer类public class RemoteDataServer extends RemoteServer 
     implements DataSender
    {
      public RemoteDataServer(int port,String name)
      {
        super(port,name);
      }
     //重载父类
      public void SendDataToCenter(byte[] data)
      {  
      
        System.out.println("ok");   
        for(int i=0;i<getWorkers().size();i++)
        {      
          getWorkers().getWorkerAt(i).sendData(data);
        }   }
       
       
    }device类
    public class Device{
    ...
    private RemoteDataServer m_rmtDataServer
    ....
    private void setReadAllDB(byte[] data)
    {
    m_rmtDataServer.SendDataToCenter(data);
    }}
    主类不能动,怎么将主类中的rmtServer做为参数传到RemoteDataServer m_rmtDataServer中来
      

  20.   

    你是说你有一个类StarDataServer
    里面有一个初始化后的RemoteServer对象rmtServer
    而你现在要写一个Device类
    里面会用到一个继承自RemoteServer类的RemoteDataServer的对象m_rmtDataServer
    你要将StarDataServer中的rmtServer在Device中当作RemoteDataServer来用,还调用了RemoteDataServer类特有的方法SendDataToCenter很遗憾,不可以!
      

  21.   

    如果类B继承了类A
    那么这样是可以的:A a = new B();//这是java的多态性
    但B b = new A();则是错误的也就是说,你不能把一个父类的对象当作它的子类的对象来用
      

  22.   

    你上面说明有一点问题
    你要将StarDataServer中的rmtServer在Device中当作RemoteDataServer来用
    应该是StarDataServer中的rmtDataServer 没有继承的关系
    那现在能否调用?
      

  23.   

    主类中没有device类啊!
    那是不行
    除非把主类中的rtmDataServer定义为静态(static)的
    就可以在Device类中操作它了
         
      

  24.   

    你上面说明有一点问题
    你要将StarDataServer中的rmtServer在Device中当作RemoteDataServer来用
    应该是StarDataServer中的rmtDataServer 没有继承的关系
    那现在能否调用?
    如果rmtDataServer是StarDataServer的成员
    你可以在你的Device类中创建一个StarDataServer的对象
    然后调用啊:public class Device {
        private void setReadAllDB(byte[] data) {
            StarDataServer starDataServer= new StarDataServer();
            starDataServer.rmtDataServer.SendDataToCenter(data);
        }
    }
      

  25.   

    在主类定义成
    public static RemoteDataServer rmtDataServer;
    rmtDataServer=new RemoteDataServer(lIntDataPort,"Remote Data Server");
    在device类中也定义
    public static RemoteDataServer rmtDataServer;
    运行到rmtDataServer.SendDataToCenter(data);出错
    java.lang.NullPointerException
            at com.tstar.Device.setReadAllDB(Device.java:624)
            at com.tstar.Device.processReadAllData(Device.java:446)
            at com.tstar.Device.access$000(Device.java:20)
            at com.tstar.Device$1$ReadAllThread.run(Device.java:341)
            at java.lang.Thread.run(Thread.java:536)帮帮我呀,我要涂血拉
      

  26.   

    搞定,谢谢zcjl(莫等闲,白了少年头),算分