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)
由于out
java中没有参数的概念,我有点难过
================================================== ================
编辑:我已经有几个人提到改变方法来返回我的对象而不是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)
我怎样才能做到这一点?我不想为每种返回对象的风格制作一个自定义类吗?
谢谢,
斯蒂芬妮
由于java中没有out参数的概念...
引用obj
是引用的副本objA
,因此分配新对象obj
不会更改objA
.这意味着obj
java不支持使用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)
归档时间: |
|
查看次数: |
2792 次 |
最近记录: |