Как методы get и set для javabeans вызываются фреймворками? - PullRequest
2 голосов
/ 06 июня 2010

Если у вас есть bean-компонент с методом getFoo, как какая бы среда, которую вы используете, знает, как вызывать метод getFoo, когда вы запрашиваете значение foo? Это делается с помощью API отражения? Или это как-то сделано с использованием аннотаций? Очевидно, я знаю, как вы можете получить метод по имени свойства, я просто не знаю, как метод вызывается.

Ответы [ 2 ]

1 голос
/ 06 июня 2010

Java использует "свойства" в соответствии с соглашением имен методов. Для свойства camelCase типа T вы должны определить одно или оба из public T getCamelCase() и public void setCamelCase(T t). Вы можете проверить свойства на bean-объекте с помощью этого кода:

Introspector.getBeanInfo (bean.getClass ()).getPropertyDescriptors ();

Обратите внимание, что поскольку свойства не являются первоклассными объектами и основаны на соглашении об именах, то такое псевдосвойство легко случайно нарушить. Например. если вы определите setFoo(int) и setFoo(int, boolean), в вашем классе не будет свойства foo.

0 голосов
/ 06 июня 2010

Фактический вызов метода действительно осуществляется посредством отражения. Вы можете, например, взглянуть на BeanUtil и, более конкретно, MethodUtil источники. Для рефлексивного вызова метода вы используете

 method.invoke( bean, parameters ); 

См. Учебное пособие для примеров.

...