首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在类的构造函数中查找实例化对象

在类的构造函数中查找实例化对象
EN

Stack Overflow用户
提问于 2009-09-27 08:01:51
回答 3查看 2.2K关注 0票数 0

在java中,如何从构造函数获取实例化对象?

我想为一些GUI类存储对父对象的引用,以模拟事件冒泡-调用父处理程序-但我不想更改所有现有的代码。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-27 08:23:35

简而言之:在Java中无法做到这一点。(您可以找出哪个类调用了您,但下面的长答案在很大程度上也适用于此。)

长期答案:根据调用位置的不同,代码神奇地表现出不同的行为几乎总是一个糟糕的想法。这会让任何维护你的代码的人感到困惑,而且会严重伤害你的重构能力。例如,假设您意识到实例化对象的两个位置具有基本相同的逻辑,因此您决定提取公共部分。惊喜吧!现在代码的行为不同了,因为它是从其他地方实例化的。只需添加参数并修复调用者即可。从长远来看,这会节省你的时间。

票数 5
EN

Stack Overflow用户

发布于 2009-09-27 08:33:56

如果您想知道调用的类,那么将"this“作为参数传递给构造函数。

代码语言:javascript
运行
复制
Thing thing = new Thing(this);

编辑:允许重构的现代IDE将使这项工作变得非常容易。

票数 3
EN

Stack Overflow用户

发布于 2009-09-27 08:10:29

在不更改大量现有代码的情况下拦截方法调用(包括构造函数)是Aspect-oriented programming的目标之一。

首先,请查看AspectJ

使用AspectJ,您可以定义一个“切入点”,指定您想要拦截某个对象或一组对象的构造函数调用(如果需要,可以使用通配符),在拦截代码(“建议”)中,您将获得方法上下文,其中包括有关调用方法和对象的信息。

您甚至可以使用AspectJ将字段添加到您的对象中,以存储父引用,而无需修改它们的现有代码(这称为“介绍”)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1483075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档