2011-02-10 57 views
1

我想定义一个类,ClassA,它可以作为参数传递给项目中的任何方法或类(全局作用域)。但是,我想强制执行一个约束条件,以确保ClassA只能在单个ClassB的范围内实例化。换句话说,我希望班级拥有私人范围,但仍然可以将该对象作为参数传递给分布在整个项目中的方法和类。可以作为参数传递到任何地方的私有类 - 是否可能是这样的事情?

这可能吗?

+1

这对于语义名称会更好。 (虽然我想不出任何副手) – SLaks 2011-02-10 20:51:58

+1

您确定要将类作为参数传递吗?只要你有稳定的接口,你就会更高兴地使用同意的接口来维护代码,所以你可以用更本地的方式修改你的代码。 – jdehaan 2011-02-10 20:53:55

+0

@jde:是的。这基本上等同于我的答案,除了使用接口而不是类。 – SLaks 2011-02-10 20:56:25

回答

6

你可以制作ClassA抽象,并且具体实现私有ClassB(作为嵌套类)。

4

您可以使ClassA成为具有内部构造函数的公共抽象类。

然后,ClassB可以定义一个派生自此的类,并创建“真实”实例。这将阻止组件外部的任何人生成类型的ClassA。

3

如果我理解你想在这里正确做什么.....

让ClassB的嵌套类ClassA的的,并为私人的ClassA的构造。

相关问题