Java中如何实现“按引用调用”?

2023-12-27

  1. Java中如何实现“按引用调用”? (假设我们使用该术语的方式与自 1960 年代以来同行评审的计算机科学文献中使用该术语的方式相同;请参阅这个维基百科页面 https://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_reference进行简单的解释。)

  2. 由于Java不支持指针,那么如何像在C和C++中那样在Java中通过引用调用函数呢?


在 Java 中真正的引用传递是不可能的。 Java 按值传递所有内容,包括引用。但你可以用容器对象来模拟它。

使用其中任何一个作为方法参数:

  • an array
  • 一个集合
  • AtomicXYZ 类

如果您在方法中更改其内容,则更改的内容将可供调用上下文使用。


哎呀,您显然是指通过引用调用方法。这在 Java 中也是不可能的,因为方法在 Java 中不是一级公民。这在 JDK 8 中可能会改变 http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-3.html,但目前,您必须使用接口来解决此限制。

public interface Foo{
    void doSomeThing();
}

public class SomeFoo implements Foo{
    public void doSomeThing(){
       System.out.println("foo");
    }
}

public class OtherFoo implements Foo{
    public void doSomeThing(){
       System.out.println("bar");
    }
}

Use Foo在你的代码中,这样你就可以轻松地替换SomeFoo with OtherFoo.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中如何实现“按引用调用”? 的相关文章

  • 如何在java swing中的每个页面中打印带有页脚的整个JPanel

    好吧 这可能很简单 但想不通 我有一个包含 JTable 的 JPanel JTable 包含很少的行 有时更多 因为我推入其中的表模型取决于数据库 但是 我不使用任何包含 JTable 的 JScolpane 因此 当 JTable 包含
  • 使用选项卡式活动中的捆绑包将值从活动传递到片段

    我是一个java文盲 但仍在尝试开发一个供我个人使用的应用程序 我从 android studio 的 Tabbed Activity 开始 除了 MainActivity 中的一个片段和一个包之外 大部分没有改变 这是我的代码 主要活动
  • 从 OMElement 对象获取 InputStream/io.Reader

    我有一个OMElement对象 从中我想得到一个InputStream或读者对象 我想要的是流式传输xml来自OMElement我有 没有加载到内存中 我只能得到XMLStreamReader对此表示反对 但我找不到办法得到InputStr
  • 以编程方式将 PEM 证书导入 Java KeyStore

    我有一个由两个文件 crt 和 key 组成的客户端证书 我希望将其导入到 java KeyStore 中 然后在 SSLContext 中使用 以通过 Apache 的 HTTPClient 发送 HTTP 请求 但是 我似乎找不到一种以
  • 使用 jdbc 程序连接到 Open Office odb 文件

    我编写了以下代码来连接到 OpenOffice db String db C Documents and Settings hkonakanchi Desktop Test odb Class forName org hsqldb jdbc
  • JUnit 使用 Mockito 测试异步方法

    我已经使用 Spring Framework 版本 5 0 5 RELEASE 在 Java 1 8 类中实现了异步方法 public class ClassToBeTested Autowired private MyComponent
  • java“void”和“非void”构造函数

    我用 java 编写了这个简单的类 只是为了测试它的一些功能 public class class1 public static Integer value 0 public class1 da public int da class1 v
  • firestore快照监听器生命周期和定价之间有什么关系?

    在我的活动中 我有一个字符串列表 这些字符串表示我想要附加快照侦听器的 Firestore 文档 我使用 Acivity ModelView 存储库结构 在活动的 onCreate 中 我向 ViewModelProvider 询问适当的
  • 业务代表与服务定位器

    Business Delegate 和 Service Locator 之间有什么区别 两者都负责封装查找和创建机制 如果 Business Delegate 使用 Service Locator 来隐藏查找和创建机制 那么 Busines
  • Maven 多模块项目结构问题

    自从过去几周构建我的 Maven 多模块项目以来 这是我的一次有趣的经历 当我决定使用 Maven 进行构建生命周期管理时 我有几个原因希望选择 Maven A 大多数开发团队都是分开的 这样每个团队都可以在项目中的单独模块上工作 例如团队
  • 如何消除警告:使用“$”而不是“.”对于 Eclipse 中的内部类

    我是 Android 开发新手 当我将 eclipse 和 Android SDK 更新到最新版本后 我收到警告 Use instead of for inner classes or use only lowercase letters
  • 会话 bean 中的 EntityManager 异常处理

    我有一个托管无状态会话 bean 其中注入了 EntityManager em 我想做的是拥有一个具有唯一列的数据库表 然后我运行一些尝试插入实体的算法 但是 如果实体存在 它将更新它或跳过它 我想要这样的东西 try em persist
  • JSP 标签+ scriptlet。如何启用脚本?

    我有一个使用标签模板的页面 我的 web xml 非常基本 我只是想在页面中运行一些代码 不 我对标签或其他替代品不感兴趣 我想使用不好的做法 scriptlet 哈哈 到目前为止 我收到了 HTTP ERROR 500 错误 Script
  • 源服务器未找到目标资源的当前表示或不愿意透露该表示存在

    web xml
  • .class 与 .java

    class 文件和 java 文件有什么区别 我正在尝试让我的小程序工作 但目前我只能在 Eclipse 中运行它 还不能嵌入 HTML 谢谢 编辑 那么如何使用 JVM 进行编译呢 class 文件是编译后的 java 文件 java 都
  • 使用外部硬盘写入和存储 mysql 数据库

    我已经设置了 mysql 数据库在我的 Mac 上使用 java 和 eclipse 运行 它运行得很好 但现在我将生成大约 43 亿行数据 这将占用大约 64GB 的数据 我存储了大量的密钥和加密值 我有一个 1TB 外部我想用作存储位置
  • Mule/码头设置

    我有一个正在运行的 Mule 应用程序 我想在其上设置 Jetty 来响应 http 请求 以下配置
  • Android 中的字符串加密

    我正在使用代码进行加密和加密 它没有给出字符串结果 字节数组未转换为字符串 我几乎尝试了所有方法将字节数组转换为字符 但没有给出结果 public class EncryptionTest extends Activity EditText
  • JDK 7 的快速调试/调试构建

    我正在寻找 JDK 的调试 或者我猜他们称之为快速调试构建 以启用在运行时生成的打印程序集以及查找性能问题时所需的其他诊断 就目前情况而言 我似乎找不到可以直接使用的 现成的 快速调试构建二进制包 有人可以帮我提供下载链接 或者至少提供有关
  • Java泛型类型

    当我有一个界面时 public interface Foo

随机推荐

  • C++ 中的比较性能( foo >= 0 与 foo != 0 )

    我最近一直在写一段代码 其中性能非常重要 基本上我有以下情况 int len some very big number int counter some rather small number for int i len i gt 0 i
  • flutter:带有后备文本的 CircleAvatar

    我正在学习 Flutter 想做一个Widget就像内置的一样CircleAvatar 但是 我希望这种行为是 指定图像 NetworkImage 和缩写 即 BB 当图像未加载时 显示缩写 如果图像加载 则显示图像并删除缩写 下面的代码可
  • 实现惰性函数式语言

    当实现惰性函数式语言时 有必要将值存储为未计算的 thunk 仅在需要时才进行计算 有效实施的挑战之一 如在例如中所讨论的 无脊椎无标签 G 机 是这个评估必须对每个重击执行一次 并且后续访问必须重用计算值 如果不这样做将导致至少二次方减速
  • 为什么我无法减小该文本的行高?

    http jsfiddle net mJxn4 http jsfiddle net mJxn4 这很奇怪 我有几行文本包裹在 em 标签 无论我做什么 都会降低价值line height低于 17px 没有效果 我可以撞line heigh
  • Flash/Flex 跨域问题 - 对来自 AWS S3 的图像使用 BitmapData.draw() 会导致 SecurityError:错误 #2122:违反安全沙箱

    我在 DisplayObject 上使用 BitmapData draw 其中包含来自我的 AWS S3 存储桶的图像 当我将 S3 图像 URL 设置为 Image 对象的源时 图像在 swf 中加载正常 但当我在其上使用 BitmapD
  • magento 中的货币符号

    我用两种不同的语言创建了两个 Magento 商店视图 English Dutch 英语 EURO 货币符号以正确的方式出现 例如 20 00 但对于荷兰语视图 它显示为 20 00 EUR 我想为两种视图设置默认符号 因为欧元是相同的 我
  • 哪个 magento 表包含产品图像名称?

    我遇到的问题是我使用 Magmi magento 产品导入开源解决方案 导入产品 但我在前端看不到产品图像 我需要知道 magento 数据库中的哪个表包含图像名称 以便我可以直接以某种方式提供它 Catalog product entit
  • PHP 停用词列表

    我正在代码中使用停止词 我有一个充满我想要检查的单词的数组 以及一个我想要检查的单词数组 目前 我一次循环一个数组 并删除该单词 如果其 in array 与停用词列表 但我想知道是否有更好的方法来做到这一点 我已经查看了 array di
  • 有没有办法同时查看两个 Laravel Mix Webpack 配置文件是否有任何更改?

    使用 Laravel Mix 是否可以使用一个命令查看两个 Webpack 配置文件 以便对任何底层文件的更改立即导致必要的文件被编译 具体来说 我有以下两个与 Laravel Mix 一起使用的 Webpack 配置文件 webpack
  • 现代英特尔处理器有多少种超标量方式?

    我刚刚了解了超标量处理器 https en wikipedia org wiki Superscalar processor https en wikipedia org wiki Superscalar processor 我还了解到 随
  • SqlBulkCopy - 给定的 ColumnName 与源或目标中的任何列都不匹配

    我正在尝试使用 SqlBulkCopy 将数据复制到 SQL 数据库表中 但它 错误地 说列不匹配 他们确实匹配 如果我使用断点来查看正在映射的列的名称 它们是正确的 错误消息显示了列的名称 并且它是正确的 这是我的方法 我有一个相同的方法
  • 根据String生成唯一的Hash码

    我有以下两个字符串 var string1 MHH2016 05 20MASTECH HOLDINGS INC Financialshttp finance yahoo com q is s mhhEDGAR Online Financia
  • 将数据框折叠成单行并基于 R 行创建新列

    我有一个包含对象名称和该对象的统计矩列表的数据框 如下所示 Object Mean IQR Skew x 1 1 1 y 2 2 2 z 3 3 3 我想要的是为每一行创建带有统计矩和对象名称前缀的列 就像这样 xMean xIQR xSk
  • 如何编写递归打印程序

    Gurus 我想知道如何编写一个打印的递归函数 1 12 123 1234 例如 display 4 应该打印 1 12 123 1234 Code include
  • Redux router - 刷新后如何重放状态?

    我有一个多步骤表单应用程序 我正在努力思考如何保存我的 redux 状态并在刷新后重播它 在应用程序中后退 前进按预期工作 但浏览器刷新后 我之前的状态为空 理想情况下 我希望能够将先前的状态保存在与路径相关的会话存储中 以便稍后重播 但我
  • 在 HTML 画布中创建链接

    是否可以从 canvas 元素中呈现的文本创建 html 链接 没有简单的方法 您必须将链接文本绘制到画布上 然后检查鼠标单击情况 这是一个演示 html 页面
  • 与泛型的多重绑定

    我正在尝试创建一个Multibinder
  • ASP Classic 应用程序中的多部分/表单数据和 UTF-8

    我有一个问题我真的不明白 我正在尝试在 ASP 经典应用程序中上传文件 而不使用外部组件 我还想发布一些将存储在数据库中的文本 文件上传完美 我正在使用以下代码 问题是其他表单输入字段 我使用的是 UTF 8 但它们最终并不是 UTF 8
  • 后期绑定onclick事件

    以下是我的 javascript 的一部分 使用 jquery list a b c for var i 0 i lt list length i a click here a click function foo list i appen
  • Java中如何实现“按引用调用”?

    Java中如何实现 按引用调用 假设我们使用该术语的方式与自 1960 年代以来同行评审的计算机科学文献中使用该术语的方式相同 请参阅这个维基百科页面 https en wikipedia org wiki Evaluation strat