让我们说这是C代码:
void change(int& x){ x++; }
要么
void change2(int* a){ *a++; }
两者都会改变全局x,对吧?
那我怎么能在java中做那样的事情呢?
具体来说,我想指向一个Vector对象
但由于Java没有指针,我不知道该怎么做.
从搜索互联网上我看到人们说Java以其他方式做到了这一点,但我没有找到任何真实的例子.
感谢
救命!
解决方法
在Java中,您可以使用对象的引用而不是指针.您不能通过引用传递基本类型,但可以将基本类型包装在对象中,然后将引用传递给该对象.
Java提供了包装int的Integer类型,但是这种类型是不可变的,所以你不能在构造之后改变它的值.但是你可以使用Apache Commons的MutableInt:
void change(MutableInt x) { x.increment(); }
调用者可以看到对x的更改.
Specifically,I want to point to a Vector object
当你写Vector v = …;您正在为变量v指定向量的引用.Java中的引用与指针非常相似.实际上,引用是使用指针在内部实现的.
Java使用pass by value.将向量传递给方法时,实际上是在复制对该向量的引用.它不会克隆载体本身.因此,在Java中传递引用与在C中传递指针非常相似.