在C++中,如果需要修改2个对象,则可以通过引用传递。你如何在java中完成这项工作?假设2个对象是基本类型,例如int。在Java中通过引用传递?
5
A
回答
12
你不行。 Java不支持传递对变量的引用。一切都通过价值传递。
当然,当按值传递对象的引用时,它将指向同一对象,但这不是通过引用调用。
0
使用泛型,你可以创建一个指针类,这将至少有点痛苦。你传递对象,改变它的value属性,当函数退出时,你的对象将包含新的值。
MyPointerClass<int> PointerClass = new MyPointerClass<int>(5);
myFunction(PointerClass);
System.out.println(PointerClass.Value.toString());
// ...
void myFunction(myPointerClass<int> SomeValue)
{
SomeValue.Value = 10;
}
1
Java没有引用传递,但您仍然可以从这些引用(它们本身通过值传递)中对象进行变异。
java.util.Arrays.fill(int[] arr, int val)
- 填充的int
阵列与给定值int
java.util.Collections.swap(List<?> list, int i, int j)
- 互换的列表的两个元素StringBuilder.ensureCapacity(int min)
- 言自明
正如你可以看到,你仍然可以修改对象(如果它们不是不可变的);你不能通过将引用或基元传递给一个函数来修改它。
当然,你可以使它们成为一个对象的域,并通过那些对象,并将它们设置为任何你想要的。但是,这仍然没有通过参考。
2
将它们包装在一个对象中,然后将该对象作为参数传递给该方法。
例如,以下C++代码:
bool divmod(double a, double b, double & dividend, double & remainder) {
if(b == 0) return false;
dividend = a/b;
remainder = a % b;
return true;
}
可以在Java被重写为:
class DivRem {
double dividend;
double remainder;
}
boolean divmod(double a, double b, DivRem c) {
if(b == 0) return false;
c.dividend = a/b;
c.remainder = a % b;
return true;
}
虽然在Java中更惯用的风格是创建并从该方法返回该对象而不是接受它作为参数:
class DivRem {
double dividend;
double remainder;
}
DivRem divmod(double a, double b) {
if(b == 0) throw new ArithmeticException("Divide by zero");
DivRem c = new DivRem();
c.dividend = a/b;
c.remainder = a % b;
return c;
}
相关问题
- 1. 在java中通过引用传递?
- 2. 通过Java中的值传递引用
- 3. 在java中传递值和通过引用传递
- 4. Java是通过值传递还是通过引用传递?
- 5. 传递对象通过Java引用
- 6. Java数组传递通过引用
- 7. 通过引用传递参数Java
- 8. 在Python中通过引用传递
- 9. 在AS3中通过引用传递
- 10. 通过引用传递与值传递
- 11. 通过引用传递流
- 12. 通过引用传递LPCWSTR
- 13. C++通过引用传递?
- 14. 为什么在java中没有办法通过引用传递
- 15. 你可以在Java中通过引用传递吗?
- 16. 在java中通过引用传递枚举
- 17. 在java中被参数通过引用或值传递
- 18. 在Java中通过引用与值传递
- 19. 通过引用传递引用?
- 20. JNA对象是通过引用还是通过java代码中的值传递
- 21. C++通过引用传递对象
- 22. 指针和通过引用传递C++
- 23. 通过引用传递熊猫DataFrame
- 24. 通过引用传递父级PHP类
- 25. 通过引用传递错误结尾
- 26. 如何通过引用传递Generic :: List?
- 27. 通过引用传递数据成员
- 28. .NET如何通过引用传递类?
- 29. 如何通过引用传递结构?
- 30. 通过引用传递TCL - 线程?
这是http://stackoverflow.com/questions/589919/doe S-java的传递通过引用 – Zxaos 2010-03-24 00:20:06