Существует много недоразумений относительно спецификации JavaBeans.
Основная причина его существования - унифицированная модель Java "компонент". Это способ программного взаимодействия с Java-объектом с помощью Reflection. Сам API называется JavaBeans Introspection . Пожалуйста, ознакомьтесь с примерами использования, и Вы узнаете намного больше, чем обычный программист на Java.
API самоанализа можно использовать для унифицированного управления элементами графического интерфейса. Ваш компонент предоставляет свои свойства в виде пары методов получения и установки, чтобы их можно было обнаружить и манипулировать ими во время выполнения на странице свойств компоновщика графического интерфейса.
Итак, смешивать API и JavaBeans Spec на мой взгляд не стоит. Это две совершенно не связанные между собой концепции, которые могут нарушать друг друга. Самоанализ JavaBeans может не работать, если сигнатура метода отличается (тип возвращаемого значения).
Взгляните на этот пример (взят из связанного урока):
public class SimpleBean
{
private final String name = "SimpleBean";
private int size;
public String getName()
{
return this.name;
}
public int getSize()
{
return this.size;
}
public void setSize( int size )
{
this.size = size;
}
public static void main( String[] args )
throws IntrospectionException
{
BeanInfo info = Introspector.getBeanInfo( SimpleBean.class );
for ( PropertyDescriptor pd : info.getPropertyDescriptors() )
System.out.println( pd.getName() );
}
}
В этом примере создается невизуальный компонент и отображаются следующие свойства, полученные из объекта BeanInfo:
Возможно, вы захотите посмотреть, что произойдет, если вы измените тип возврата void
на что-либо еще. Я так и сделал, и результат тот же. Так значит ли это, что это разрешено?
Боюсь, нет. Спецификация JavaBeans довольно строга в отношении этих сигнатур методов. Просто так получилось, что реализация прощает. Тем не менее, я бы не советовал смешивать свободный интерфейс с JavaBeans. Вы не можете полагаться на это, если открытие работает сейчас, оно также будет и в будущем.
Но с другой стороны - похоже, вы не используете JavaBeans в полной мере. Только пара методов получения / установки. Вам решать, как Вы реализуете и разрабатываете свои API.