2013-06-23 7 views
2

Я видел кучу мест, где у нас есть публичные конструкторы во вложенных классах. Вопрос в том, зачем и когда вам это нужно? Похоже, что частный конструктор тоже будет выполнять одну и ту же работу, поэтому почему у нас нет соглашения о том, что для любого внутреннего/вложенного класса требуются частные конструкторы?Что такое использование открытого конструктора во вложенном классе

Если нам не нужно строить внутренний класс за пределами объекта, правильно ли объявить внутренний конструктор класса приватным? Если да, то почему запись в java-картах не объявляет свой конструктор закрытым?

Спасибо,

+1

См. 'Java.awt.geom.Point2D.Double'. Это вложенный класс с публичными конструкторами, не так ли? Если это конструкторы являются частными, мы не можем использовать класс. – johnchen902

+0

Вы довольны моим ответом? Если да, тогда вы должны принять это. – Nicholas

ответ

4

Тогда вы не смогли бы создать экземпляр внутреннего класса из любого другого. Будучи в состоянии создать экземпляр внутреннего класса широко используется в Builder Pattern:

House house = new House.Builder().addRoof().paint(Color.WHITE).build(); 

Если конструктор Builder был частным, вы не смогли бы сделать выше, что очень полезно при создании объектов с комплексом государство.