定义对实例化类的上下文的约束

时间:2009-12-03 08:30:21

标签: java scope declaration

我想知道是否有一种方法可以定义一个类,使得它的实例永远不会是另一个类的成员(只有局部变量),或者反过来 - 只有成员但从不是本地的。

有没有一种方法可以决定一个类的预期实例的范围?

3 个答案:

答案 0 :(得分:2)

我不这么认为。但我没有确切的证据。

答案 1 :(得分:1)

要限制范围,您需要某种类注释或类修饰符,并且虚拟机需要检查功能,是否将类(或此受限类的任何子类)分配给成员或局部变量并违反约束。

想象一下,你有一个类 - 刚刚发明 - 'onlylocal'修饰符,表明你只允许局部变量中的实例。

public onlylocal class LocalUseOnlyClass implements Serializable {
  //...
}

在另一个类中,有人刚刚在构造函数中执行过:

private Object member;
public MyOtherClass(Serializable something) {
  this.member = something
}

如果您将LocalUseOnlyClass的实例传递给该构造函数,则编译器无法检测到,因此JVM必须检查并抛出异常或错误。

< BTW& OT:你的意图是什么? - 也许有替代方案可以满足您的基本要求。

答案 2 :(得分:1)

没有。成员和局部变量可以相互分配。