Не удается создать экземпляр - у конструктора есть личный доступ - PullRequest
0 голосов
/ 31 марта 2020

Я пытался создать экземпляр класса рабочего стола, используя Desktop desktop = new Desktop();, но я получаю ошибку Desktop() has private access in Desktop, но в java документации класс рабочего стола объявлен как publi c. Like this ..

publi c Класс Desktop расширяет объект

, так как он публикуется c. и ни один не c. так почему я не могу создать экземпляр этого? Я знаю, что могу использовать Desktop desktop = Desktop.getDesktop(); Но я не могу понять, почему я не могу создать экземпляр класса Desktop.

Ответы [ 2 ]

3 голосов
/ 31 марта 2020

Это сообщение означает, что Desktop() (конструктор) является закрытым внутри класса. Если вы посмотрите на документацию, вы не найдете конструктора publi c, который вы можете использовать. Следовательно, вам нужно использовать этот stati c метод для создания экземпляра (что немного неверно в вашем вопросе):

Desktop desktop = Desktop.getDesktop();
0 голосов
/ 02 апреля 2020

Ознакомьтесь с документацией:

Класс Desktop позволяет приложению Java запускать связанные приложения, зарегистрированные на собственном рабочем столе, для обработки URI или файла.

Объект Desktop представляет собственный рабочий стол пользователя. Это не «нормальный» объект, который вы могли бы создать много раз, потому что есть только один рабочий стол, и он должен быть связан со многими элементами операционной системы. Вы не должны беспокоиться о создании этого объекта. Библиотеки java позаботятся о создании этого объекта и подключении его к операционной системе.

Вот почему вы не можете создать экземпляр. И способ, которым разработчики этого класса гарантируют, что вы не можете создавать экземпляры этого класса, состоит в том, чтобы установить конструктор как private. Вот что означает ошибка Desktop() has private access in Desktop.

...