如何从 java 的构造函数中获取实例化对象?
我想为某些 GUI 类存储对父对象的引用以模拟事件冒泡 - 调用父处理程序 - 但我不想更改所有现有代码。
如何从 java 的构造函数中获取实例化对象?
我想为某些 GUI 类存储对父对象的引用以模拟事件冒泡 - 调用父处理程序 - 但我不想更改所有现有代码。
简短的回答:在 Java 中没有办法做到这一点。(你可以找出哪个班级叫你,但下面的长答案大部分也适用于那里。)
长答案:根据调用它的位置而神奇地表现不同的代码几乎总是一个坏主意。这会让任何必须维护您的代码的人感到困惑,并且会严重损害您的重构能力。例如,假设您意识到实例化对象的两个位置具有基本相同的逻辑,因此您决定将公共位分解。惊喜!现在代码的行为有所不同,因为它是从其他地方实例化的。只需添加参数并修复调用者。从长远来看,它将为您节省时间。
如果您想知道调用类,则将“this”作为参数传递给构造函数。
Thing thing = new Thing(this);
编辑:允许重构的现代 IDE 将使这很容易做到。