Возможно ли реализовать композицию на Java? Если мы создадим класс A и будем использовать экземпляр этого класса в классе B, то как мы можем гарантировать, что A не может самостоятельно создать отдельный объект?Код Java для композиции
ответ
Я не думаю, что это возможно. Единственное подобное решение состоит в том, чтобы создать A как частный внутренний класс B. Тогда не кто-то, кроме B, может создать экземпляр A.
Вы могли бы создать свои скомпонованные классы как внутренний класс вашего класса контейнера.
class ContainerClass{
class ContainedClass1{
}
class ContainedClass2{
}
}
Таким образом, они привязаны к экземпляру ContainerClass
и не может быть создана без экземпляра одного и того же. Вы можете сделать их частными, тогда они могут быть созданы только в классе
можно усовершенствовать или дать образные примеры. –
@qualtar Это в основном тот же ответ, что и принятый. –
Если я правильно понял, вы правильно задаете вопрос, что вы хотите, это внутренний класс. По существу для создания внутреннего класса вы пишете класс A внутри класса B.
Вы можете создать класс A как статический внутренний класс B и сохранить конструктор A как закрытый. Тогда только B может использовать этот конструктор.
Некоторые ссылки для справки:
Может быть, вы можете использовать загрузчики классов, чтобы определить, если класс загружается из B или не
так на основе ответов, которые я получаю, я могу с уверенностью заключить, что невозможно реализовать композицию на Java, за исключением использования внутреннего класса (что слишком очевидно). Поэтому третий класс не может быть включен в качестве композиции. –
Если у вас есть сторонний класс, для которого вы «не можете создать независимый объект», как вы можете использовать его в композиции? –
@AmitKhanna: Конечно, я могу создать объект третьего класса. Я просто хочу подтвердить, что класс третьей стороны никогда не может использоваться в композиции (могу ли я сделать объект или нет). –