0
A
回答
5
简答:在Java中没有办法做到这一点。 (你可以找出什么类叫你,但下面的长答案也适用于大多数情况。)
长答案:代码的神奇行为取决于它被调用的地方几乎总是一个坏主意。任何需要维护你的代码的人都会感到困惑,这会严重影响你重构的能力。例如,假设您意识到实例化对象的两个地方基本上具有相同的逻辑,所以您决定将常见位分解出来。惊喜!现在代码的行为有所不同,因为它正在从其他地方实例化。只需添加参数并修复呼叫者。从长远来看,这将节省您的时间。
1
拦截方法调用(包括构造函数)不改变大量现有的代码是Aspect-oriented programming的一件事。
退房AspectJ开始。使用AspectJ,你可以定义一个“切入点”来指定你想拦截某个对象或一组对象的构造函数调用(如果需要,使用通配符),并且在拦截代码(“advice”)中,您将获得方法上下文,其中包含有关调用方法和对象的信息。
您甚至可以使用AspectJ向对象添加字段来存储父引用而不修改其现有代码(这称为“简介”)。
3
如果您想知道调用类,则将“this”作为参数传递给构造函数。
Thing thing = new Thing(this);
编辑:现代IDE允许重构将使这很容易做到。
+0
这也表明“事”是内部阶层的候选人。 – erickson
相关问题
- 1. CoffeeScript:在实例化构造函数中的对象时出错
- 2. 如何在构造函数中实例化接口类型化对象?
- 3. 在另一个构造函数中实例化的对象的构造函数中调用函数
- 4. Java - 在其构造函数中实例化同一类的对象
- 5. Roboguice - 从具有参数的构造函数实例化对象
- 6. 如何在实例化对象时调用父构造函数?
- 7. C++。对象是用错误的构造函数实例化的?
- 8. 在Java中的构造函数中实例化不同的类
- 9. 从构造函数实例化的全范围对象
- 10. 获取实例化构造函数的调用对象?
- 11. 如何实例化其构造函数使用yield的对象?
- 12. 调用没有对象实例化的类方法(带构造函数)在php
- 13. 使用接受字符串参数的构造函数实例化类对象?
- 14. JavaScript构造函数实例化对象前缀约定
- 15. 在构造函数中传递对象的特定实例
- 16. 使用COM的参数化构造函数实例化类
- 17. 无法实例化[..]:找不到默认构造函数;
- 18. 我应该在构造函数中实例化其他类吗?
- 19. 将对象实例化为没有默认构造函数的类成员
- 20. 在其他类构造函数中初始化类对象
- 21. 实例化继承构造函数
- 22. 从它的构造函数中创建新的对象实例
- 23. 从类对象构造类的实例在Java中
- 24. 在构造函数中计数实例
- 25. 反序列化类型T的对象的构造函数未找到
- 26. 在基类构造函数中构造对象?
- 27. 在运行时使用内部构造函数实例化类
- 28. 不能实例中的对象构造
- 29. 在另一个类C++的构造函数中实例化一个类的对象?
- 30. 在需要复制构造函数时实例化GCC:模板构造函数
感谢您的输入,但向代码库添加更多库并不是我想要做的事情。我只希望用java来快速简单地解决这个问题。 – Andreas
...它变成了Java!对不起,无法抗拒。祝你好运! – JoshJordan