gpt4 book ai didi

java - Java中如何检查内部类的所有权

转载 作者:行者123 更新时间:2023-12-02 03:15:37 25 4
gpt4 key购买 nike

我有以下结构:

public class Outer {
public /*non-static*/ final class Inner {
// to prevent instantiating other than in method `create`
private Inner(/* ... */) { /* ... */ }
/* ... */
}

Inner create(/* ... */) {
return new Inner(/* ... */);
}

void operateOn(Inner inner) {
// TODO check if inner for this Outer instance
}
}

和这样的用法:

Outer manager = new Outer();
Inner state = manager.create(/* ... */);

还有其他地方

manager.operateOn(state);

我想创建一个万无一失的实用程序类,这意味着 Outer.operateOn 只接受自己拥有的 Inner 实例

我知道所有非静态内部类都通过其类体内的 Outer.this 引用(所有)外部类。

我想知道是否有更好的方法来检查这一点,而不是向 Inner 添加任何方法,例如 isOwnedBy(Outerouter) { returnouter == Outer.this; }getOwner() { return Outer.this }

最佳答案

I want to create a fool-proof ....

这总是比你想象的更难。

manager.operateOn(state);

如果您知道它必须提供给与状态相关的经理,我就不会提供该经理。

尝试一下

state.operate();

state知道它应该使用哪个manager。这样就无法指定错误的经理,因为您无法更改经理。

关于java - Java中如何检查内部类的所有权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24780517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com