Я считаю, что понимаю, что такое Java Beans: Java-классы (классы), содержащие конструктор no-arg, сериализуемы и выставляют свои поля с помощью геттеров и сеттеров.
-
Должен ли Java Bean выставлять все свои поля, чтобы квалифицироваться как bean? Если нет, нужно ли даже выставлять какие-либо данные?
-
Может ли Java Beans включать конструкторы с аргументами, а также конструктор no-arg?
-
Какова цель Java Beans, кроме как соответствовать определенному стилю кодировки? Кажется, что есть много разговоров о 'beans this' или 'beans that', но я не знаю, почему они выгодны, в частности.
Я могу полностью создать конструктор no-arg. Для этого может быть множество причин, и я не удивлюсь, если конструктор no-arg поможет компилятору сделать некоторые оптимизации. Я также могу понять, как сделать ваш класс сериализуемым. Даже если класс никогда не будет сериализован, он может быть, и вернуться назад, чтобы сделать это ретроактивно, может быть раздражающим (или невозможным в библиотеке с черным ящиком).
Но самым любопытным является требование иметь все поля, доступные через геттеры и сеттеры. Я использую их в своей работе, когда мне это нужно, но кажется странным, что Java Beans требует их (возможно, все они, в зависимости от моего ответа на # 1). Если это проблема с отражением, не может ли отражение получить поля так же легко? Если это проблема с выполнением большего, чем просто установка значения, не может ли отражение использовать геттер/сеттер над полем, если метод существует?