【发布时间】:2014-07-28 21:53:24
【问题描述】:
所以这是另一个值得反对的问题。
我了解 Java 是按值传递的,这意味着什么以及它是如何工作的。所以这不是另一个你能解释什么是传值。我更好奇为什么 Java 不包括通过引用传递?我想这会有用吗?知道巩固我脑海中的推理也会很有帮助....
我讨厌'这是因为它是'场景肯定等同于'因为我这么说'。那么有没有人知道为什么 Java 只包含按值传递?
【问题讨论】:
-
额外的复杂性和混乱超过了好处。
-
这不是“因为我这么说”。这是因为吉姆·高斯林这么说的。
-
推测:这是可能可行的最简单的解决方案。查看允许使用 th ref 或 out 关键字的代码(例如 C#)的语言有多少次?几乎没有,即使你这样做了,你也应该几乎总是把它读作“这个函数有多个返回参数,我懒得包装它,也没有匿名类或动态类,或者我没有理解概念”,而不是“此方法将对您提供的对象图做一些有用和/或破坏性的事情”。
-
比这更简单。我认为对于不太高级的程序员来说,Java 的做法是最容易理解的,当你在 C# 中编程并且看到
ref或out关键字时,你总是需要弄清楚它的作用。我实际上已经看到通过引用获取参数的代码和方法的第一行,只是创建了一个新的。这会创建一个几乎无法调试的应用程序(特别是如果该对象是 LINQ2SQL 实体),除非您想手动单步调试所有这些。 -
此外,通过使用基于堆栈的值传递模型,方法调用的 JVM 实现大大简化。
标签: java pass-by-value