gpt4 book ai didi

java - 使用 java 输出参数时的“空指针访问”

转载 作者:行者123 更新时间:2023-12-01 06:30:05 27 4
gpt4 key购买 nike

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

ClassA objA = null;  
if(myMethod(objA))
{
// position (1)
//use objA somehow
}

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

public bool myMethod(ClassA obj)   
{
obj = .....
}

我正在使用 Eclipse,我遇到的问题是 Eclipse 显示警告:
空指针访问。当我到达位置 (1) 时,变量 objA 在此位置只能为 null

由于java中没有out参数的概念,我有点困惑

================================================== ===================
编辑:我已经有几个人提到要更改方法以返回我的对象​​而不是 bool。但是如果我需要一种方法来改变多个对象怎么办?例如:

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

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

public bool myMethod(ClassA obj, ClassB obj2)   
{
//do stuff
}

我该怎么做?我不想为每种类型的返回对象创建一个自定义类?

谢谢,
斯蒂芬妮

最佳答案

Since there is no concept of out parameters in java ...

引用obj是引用objA的副本,因此将新对象分配给obj不会改变objA。这意味着 java 不支持使用 obj 作为输出参数。

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

解决方案1:用异常代替 boolean 值(仅当 boolean 值指示错误时)

ClassA objA = null;  
try{
objA = myMethod();
//DO something with objA
}catch(MyException ex){
}

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

ClassA objA = null;  

objA = myMethod();
if(objA != null)
{ //DO something with objA
}

解决方案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;
}

灵魂4:使用单元素数组 - 丑陋只在极端情况下使用

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

boolean myMethod(ClassA[] obj){
obj[0] = new ClassA();
}

关于java - 使用 java 输出参数时的“空指针访问”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5095720/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com