检索方法或构造函数的调用者实例(不是类)

2023-11-26

是否可以检索方法/构造函数的调用者实例?

这个问题已经发布,但每次答案都在谈论调用者类(使用堆栈跟踪)而不是调用者实例。 如果存在解决方案,那么构建对象图(具有公共超类型)并使用默认构造函数处理父子导航会非常方便。

public class TestCallStack {
    public static class BaseClass {
        BaseClass owner;
//      //ok, this is the correct way to do it
//      public BaseClass(BaseClass owner) {
//          this.owner = owner;
//      }
        public BaseClass() {
            //this.owner = ???????; 
        }
    }
    public static class Parent extends BaseClass {
        Child child = new Child();
    }
    public static class Child extends BaseClass {
    }

    public static void main(String[] args) {
        Parent parent = new Parent();
        System.out.println(parent.child.owner==parent); // must be true
    }
}

你的直觉是对的——这是不可能的。我个人认为这是一个good事情,因为它会使代码在重构方面变得非常脆弱(想象一下将一些代码拉出到静态方法中 - 突然根本没有调用者对象)。

如果您想表达某种所有者关系,则应明确提供该所有者。

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

检索方法或构造函数的调用者实例(不是类) 的相关文章

随机推荐

  • Matplotlib 中的非线性第二轴

    我想知道如果没有任何解析公式 是否有一种方法可以在 Matplotlib 中添加第二个非线性 x 轴 或者简化是否有办法为原始 x 轴中的每个数字创建不同的标签 下图解释了我正在寻找的内容 不幸的是类似question之前已被问过但未得到答
  • 如何在Java中使用Collections.sort()?

    我得到了一个物体Recipe实现Comparable
  • 需要在每个 cron 作业之前设置 rvm 环境

    我大致按照这组说明的第一部分中概述的模式安装和配置 RVM http blog ninjahideout com posts a guide to a nginx passenger and rvm server 基本上 这意味着没有预构建
  • 带有单击事件处理程序的 WPF 命令

    当我使用Command in a Button控制加入的事件处理程序Click事件永远不会引发 我怎样才能使用Command并处理Click事件处理程序 您可以将 ICommand 附加到另一个属性并从 Click 处理程序中执行它
  • Chrome DevTools - 性能选项卡摘要

    在 Chrome DevTools 的 性能 选项卡上 摘要 面板显示多个活动类别的计时 加载 脚本编写 渲染 绘画 系统 空闲 我似乎无法在 DevTools 文档中找到每个类别所代表的内容的简明描述 我觉得我必须忽略一些显而易见的事情
  • 如何将两个div并排放置? [复制]

    这个问题在这里已经有答案了 考虑以下代码 wrapper width 500px border 1px solid black first width 300px border 1px solid red second border 1px
  • 如何将 package.json 数组传递给 grunt.js

    有没有办法将数组从 package json 文件传递 给 grunt js 我尝试了几种不同的方法 但似乎都不起作用 我目前有 global module false module exports function grunt Proje
  • 如何制作模块向量?

    我想实例化一个一维元素数组 并且元素扩展模块 我该怎么做 如果我说我最好的猜测 那就是 val elements Vec 64 new element 我收到以下错误消息 error Users mykland work chisel ar
  • 如何从 PHP 调用 Perl 脚本?

    我有兴趣了解如何在 PHP 中调用 运行 Perl 脚本 您可以在 Php 代码中使用简单的 Php Perl 扩展 这将允许您执行代码和 Perl 变量 函数以及实例化对象 perl new Perl perl gt require te
  • 如何在启动repl时默认加载ns

    我用的是lein2 我想在 repl 启动时默认加载一些 ns 当为该项目执行 lein2 repl 时 是否可以在 project clj 中指定应加载的 ns 你会在其中找到很多答案示例项目 Options to change the
  • Bootstrap:在标签内输入

    为了避免表单上的每个输入元素都有一个 ID 我想将表单输入放在label 引导程序 3 我的问题是 这导致行之间有额外的垂直间距 输入没有填充其父级的整个宽度 并且输入未对齐
  • 使用UINT64_C的目的?

    我在 boost 源中找到了这一行 const boost uint64 t m UINT64 C 0xc6a4a7935bd1e995 我想知道这里使用宏的目的是什么 这一切所做的就是添加ULL到提供的常数 我认为它可能会被用来让人们更难
  • 剃须刀要求;当使用(Html.BeginForm())时

    using Html BeginForm Name Html TextBoxFor o gt o Name
  • C# 中的拍手声检测

    我希望能够检测到拍手声 对于任何形式的声音识别都很陌生 有什么简单的方法可以做到这一点吗 如果没有 有什么好的 C 声音识别 检测资源吗 我的目标是通过一些基本的基于拍手的控制来实现客户媒体中心的自动化 以前也有人问过类似的问题 给定音频流
  • NoSuchMethodException: springframework.boot.autoconfigure.http.HttpMessageConverters

    我想将 Java 9 与 Spring 一起使用 但我得到例外 Caused by org springframework aop framework AopConfigException Unable to instantiate pro
  • 使用 Gradle 从现有 pom.xml 文件中读取信息?

    在蚂蚁金服中Maven Ant 任务可用于读取 Maven 属性 如下所示
  • 减慢音频文件的播放速度而不改变其音调?

    我正在申请大学音乐专业 我正在考虑的一个功能是减慢音乐播放速度而不改变其音调 我已经在商业软件中看到了这一点 但找不到任何库或开源应用程序可以执行类似的操作 那里有图书馆吗 如何从头开始从各种文件格式完成此操作 注意 我正在使用java工作
  • 自定义日志记录以在运行时收集消息

    有没有办法在运行时创建一个 log4j Logger 将日志消息收集到缓冲区中 我目前有一个记录许多事件的类 对于需要监视记录的事件的远程应用程序 我想只交换记录到缓冲区的记录器 然后检索缓冲区 而不是重构该类 例如 给定类似的东西 Cla
  • 如何使用谓词过滤子实体集合?

    我有一个实体服务 需要根据 id 列表过滤子实体的集合 我的服务有一个公共方法 它接收父实体的 id 和他的一些子实体的 id 列表 默认情况下 我知道 JPA 将获取所有相关实体 这是他的实际行为 但我们需要努力提高服务的性能 因此 我只
  • 检索方法或构造函数的调用者实例(不是类)

    是否可以检索方法 构造函数的调用者实例 这个问题已经发布 但每次答案都在谈论调用者类 使用堆栈跟踪 而不是调用者实例 如果存在解决方案 那么构建对象图 具有公共超类型 并使用默认构造函数处理父子导航会非常方便 public class Te