0

是否可以在 Java 中实现组合?如果我们创建了一个类A,并且在B类中使用了这个类的一个实例,那么如何保证A不能自己创建一个独立的对象呢?

4

5 回答 5

2

我不认为这是可能的。唯一类似的解决方案是将 A 创建为 B 的私有内部类。然后除了 B 之外没有其他人可以实例化 A。

于 2013-08-21T07:36:19.313 回答
1

您可以将组合类作为容器类的内部类。

class ContainerClass{

    class ContainedClass1{

    }

    class ContainedClass2{

    }

}

通过这种方式,它们与一个实例相关联,ContainerClass并且如果没有相同的实例就无法创建。您可以将它们设为私有,然后它们只能在类中创建

于 2013-08-21T07:36:20.083 回答
0

如果我正确理解你的问题,你想要的是一个内部类。本质上是为了创建一个内部类,你在 B 类中编写 A 类。

于 2013-08-21T07:36:50.397 回答
0

您可以将 A 类创建为 B 的静态内部类,并将 A 的构造函数保持为私有。那么只有 B 可以使用这个构造函数。

一些参考链接:

嵌套类中私有构造函数的范围

于 2013-08-21T07:37:29.433 回答
0

也许您可以使用 classLoaders 来确定 A 类是否从 B 加载

于 2013-08-21T08:12:57.023 回答