将参数传递给其他类的私有类时获取java.lang.nullpointerException

时间:2018-06-21 08:06:55

标签: java nullpointerexception

我有一个主班:

public class Retrigger {
    public static void main(String[] args){
        Long i= 97944605L;
        com.armus.flow.Implement rdf = new com.armus.flow.Implement();
        try {
            rdf.retrfail(i);
        }
        catch(Throwable e){
            System.out.println("In exception a = "+e+" "+i);
            e.printStackTrace();
            return;            
        }
    }
}

我正在调用retrfail类的方法Implement并传递一个长值:

import com.armus.common.Dsessionservice;

public class Implement
    extends Remote
    implements DMSer, Ajaxser {

    private Dsessionservice flowservice;

    private Dsession getDsession(long sessionId)
      throws ServiceException {
      try {
          dss = this.flowservice.getprocessname(Long.valueOf(sessionId));
      }
      catch (ServerException e) {
          //some code
      }
      //some code
    }

    public void retrfail(long sessionId) {
        Dsession dss = getDsession(sessionId);
        // some code
    }
}

实现类将ID传递给其他Dsessionservice接口以获取进程名称。

public abstract interface Dsessionservice 
{
  public abstract Dsessionservice getprocessname(Long paramLong)
    throws ServerException;
  }

程序编译正常。但是在下面一行运行程序时,我得到了java.lang.nullpointerexception

dss = this.flowservice.getprocessname(Long.valueOf(sessionId));

我在这里做错了什么。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您忘记初始化flowserive变量。

在Java中,当您声明诸如private Dsession flowserive;之类的变量时,该变量未初始化为任何内容,因此没有成员方法getprocessname(...)尝试在不存在该方法时访问该方法将引发{{1 }}。

尝试这样的事情:

java.lang.nullpointerexception

对不起,我不知道您的Dsession类,所以也许您需要更改它才能正确初始化Dsession对象...