我想知道是否有办法定义一个类,使得它的实例永远不会成为另一个类的成员(仅局部变量),或者相反 - 只有会员,但从来没有本地。在实例化类的上下文中定义约束条件
有没有什么方法可以决定一个类的前瞻性实例的范围?
我想知道是否有办法定义一个类,使得它的实例永远不会成为另一个类的成员(仅局部变量),或者相反 - 只有会员,但从来没有本地。在实例化类的上下文中定义约束条件
有没有什么方法可以决定一个类的前瞻性实例的范围?
我不这么认为。但我没有确切的证据。
为了限制范围,你需要某种类的注解或类修饰符,并且虚拟机需要检查的功能是否将一个类(或该受限类的任何子类)分配给成员或局部变量,以及违反了约束。想象一下,你有一个类 - 只是发明 - 'onlylocal'修饰符,表明你只允许局部变量的实例。
public onlylocal class LocalUseOnlyClass implements Serializable {
//...
}
,并在另一个类中有人只是在构造函数中所做的:
private Object member;
public MyOtherClass(Serializable something) {
this.member = something
}
编译器无法检测,如果你通过LocalUseOnlyClass的实例,该构造函数,所以JVM不得不检查和抛出异常或错误。
BTW & OT:你的意图是什么? - 也许有一种替代方案可以满足您的基本要求。
没有。成员和局部变量可以分配给对方。
你为什么要这么做?我不允许,比如装饰者? –