Java将指向对象的指针传递给函数
我想要实现的是这样的目标:
MyClass object = null;
doStuff(&object);
// `object` can now be non-null
我目前正在做的是这样,但我认为必须有更好的方法在Java中实现这种行为:
MyClassPointer pointer = new MyClassPointer(null);
// pointer.object is null
doStuff(pointer);
// pointer.object can now be non-null
# 1 楼答案
在Java中,引用(很像C++中的指针)不能直接访问,并且总是按值传递。因此,不能在方法中更改引用的值
# 2 楼答案
使用Visitor pattern,您的MyClass是dostuff必须“访问”的对象
# 3 楼答案
为什么不简单地:
这是更直观的。否则必须传递引用(而不是指针!)如您所识别的,将容器对象添加到方法中。这在Java世界中并不常见
# 4 楼答案
就我所知,java语言是实现这一点的唯一方法。 但您可以简单地在类中实现方法。在你的方法中也有可能返回你的对象
或者你可以用自己的方式来做。还可以使用反射调用方法
# 5 楼答案
如果您真的想
doStuff
返回两个值:可能有更好的方法来设计它。尽管如此,如果您认为让doStuff
返回两个值确实是最好的设计,那么可以使用一个简单的帮助器类:然后将),但它当然可以是任何类型。)
doStuff
的返回类型更改为MyClassAndBoolean
。这是我认为类中的公共字段可以使用的极少数情况之一。因为定义一个简单的类只是为了用作函数结果,而不是表示一个连贯的概念,所以通常关于定义访问器而不是公开字段等的担忧实际上并不适用。(顺便说一句,我只是猜测另一种类型是^{另一个解决方法:
将
doStuff
的参数类型更改为MyClass[]
,并将新对象填充到parameter[0]
。我确实在一些Java和Android库方法中看到了这个习语