【发布时间】:2023-12-22 07:44:01
【问题描述】:
我想知道是否有一种方法可以定义一个类,它的实例永远不会是另一个类的成员(只有局部变量),或者反过来——只有成员但永远不会是本地的。
有什么方法可以让一个类决定其预期实例的范围?
【问题讨论】:
-
您为什么要这样做?比如说,我不能成为一名装饰师吗?
标签: java scope declaration
我想知道是否有一种方法可以定义一个类,它的实例永远不会是另一个类的成员(只有局部变量),或者反过来——只有成员但永远不会是本地的。
有什么方法可以让一个类决定其预期实例的范围?
【问题讨论】:
标签: java scope declaration
我不这么认为。但我没有确凿的证据。
【讨论】:
要限制范围,您需要某种类注释或类修饰符,并且虚拟机需要该功能来检查类(或此受限类的任何子类)是否分配给成员或局部变量并违反约束。
想象一下,你有一个带有 - 刚刚发明的 - 'onlylocal' 修饰符的类,表明你只允许局部变量中的实例。
public onlylocal class LocalUseOnlyClass implements Serializable {
//...
}
在另一个类中,有人刚刚在构造函数中做了:
private Object member;
public MyOtherClass(Serializable something) {
this.member = something
}
如果您将 LocalUseOnlyClass 的实例传递给该构造函数,编译器无法检测到,因此 JVM 必须检查并抛出异常或错误。
顺便说一句 & OT:你的意图是什么? - 也许有替代方案可以满足您的基本要求。
【讨论】:
没有。成员和局部变量可以相互赋值。
【讨论】: