2009-12-03 53 views
1

我想知道是否有办法定义一个类,使得它的实例永远不会成为另一个类的成员(仅局部变量),或者相反 - 只有会员,但从来没有本地。在实例化类的上下文中定义约束条件

有没有什么方法可以决定一个类的前瞻性实例的范围?

+0

你为什么要这么做?我不允许,比如装饰者? –

回答

2

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

1

为了限制范围,你需要某种类的注解或类修饰符,并且虚拟机需要检查的功能是否将一个类(或该受限类的任何子类)分配给成员或局部变量,以及违反了约束。想象一下,你有一个类 - 只是发明 - 'onlylocal'修饰符,表明你只允许局部变量的实例。

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

,并在另一个类中有人只是在构造函数中所做的:

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

编译器无法检测,如果你通过LocalUseOnlyClass的实例,该构造函数,所以JVM不得不检查和抛出异常或错误。

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

1

没有。成员和局部变量可以分配给对方。