【发布时间】:2011-01-24 14:47:08
【问题描述】:
下面的Java代码抛出空指针异常。
public class New{
int i;
New(int i)
{
this.i = i;
}
public void func(New temp)
{
temp.i = 10;
temp = new New(20);
}
public static void main(String[] args)
{
New n = null;
n.func(n);
System.out.println("value "+ n.i);
}
}
原因是,java 按值传递对象引用。如果我想返回一个对象,那么我可以从函数中返回它。
但是,如果我有多个对象,我可以返回对象引用的唯一方法是将它们保存到另一个对象中,例如拥有一个包含所有对象引用的容器。
有没有更好的方法?
在 C++ 中,我通常只传递指针的地址来处理这种情况。如果我只想返回单一类型的两个对象,那么创建一个容器并传递它是一种过度杀戮。
从一个函数返回多个对象有什么问题?为什么所有这些语言中函数的语义都不能改变?
【问题讨论】:
-
应该是New n=new New();而不是 New n=null;??
-
显然这不是作业题。
-
嘿 Zaki,我实际上可以从函数中返回对象,但我担心我必须返回多个对象的情况。