使用java输出参数时'空指针访问'

Wit*_*eso 0 java eclipse parameters

我在java工作,想要使用输出参数之类的东西.这是一个例子:

ClassA objA = null;  
if(myMethod(objA))  
{  
   // position (1)
   //use objA somehow  
} 
Run Code Online (Sandbox Code Playgroud)

======================

public bool myMethod(ClassA obj)   
{   
     obj = .....   
}  
Run Code Online (Sandbox Code Playgroud)

我正在使用Eclipse,我遇到的问题是日食显示警告:
Null pointer access. The variable objA can only be null at this location当我到达位置时(1)

由于outjava中没有参数的概念,我有点难过

================================================== ================
编辑:我已经有几个人提到改变方法来返回我的对象​​而不是bool.但是,如果我需要一种方法来改变几个对象呢?例如:

 ClassA objA = null;  
  ClassB objB = null;
    if(myMethod(objA, objB))  
    {  
       // position (1)
       //use objA and objB somehow  
    } 
Run Code Online (Sandbox Code Playgroud)

======================

public bool myMethod(ClassA obj, ClassB obj2)   
{   
     //do stuff 
}  
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?我不想为每种返回对象的风格制作一个自定义类吗?

谢谢,
斯蒂芬妮

jos*_*efx 5

由于java中没有out参数的概念...

引用obj是引用的副本objA,因此分配新对象obj不会更改objA.这意味着objjava不支持使用out参数.

因此,java方法只能返回一个值.以下是可能的解决方案/解决方法.

解决方案1:异常而不是布尔值(仅当布尔表示错误时)

ClassA objA = null;  
try{
   objA = myMethod();
   //DO something with objA
}catch(MyException ex){
}
Run Code Online (Sandbox Code Playgroud)

解决方案2:出现错误时返回null.

ClassA objA = null;  

   objA = myMethod();
  if(objA != null)
{ //DO something with objA
}
Run Code Online (Sandbox Code Playgroud)

解决方案3:使用Pair返回多个值

MyPair mp = myMethod();
if(mp.first){
}

MyPair myMethod(){
   MyPair ret = new MyPair();
   mp.first = ...;//boolean
   mp.second = new ClassA();
   return ret;
}

class MyPair {
   boolean first;
   ClassA second;
}
Run Code Online (Sandbox Code Playgroud)

Soultion 4:使用单个元素数组 - 丑陋仅在极端情况下使用

ClassA[] objA = new ClassA[1];
if(myMethod(objA))
{
}

boolean myMethod(ClassA[] obj){
   obj[0] = new ClassA();
}
Run Code Online (Sandbox Code Playgroud)