Providing Additional BeanInfo Objects
I mentioned near the beginning of this chapter that when explicit
information is provided for a given feature set of the Bean, the base
classes are not examined for that feature set. This creates a problem
when you create a Bean from a subclass that provides only some of the
exposed properties, methods, and events, and the rest come from a
base class. Let’s say you have class AA that
exposes a property named propA, and class
BB that extends class AA and
exposes its own property named propB. If you
were to use low-level reflection to analyze class
BB, you would find two properties named
propA and propB. Now
let’s say you create a class called
BBBeanInfo (the BeanInfo class for class
BB). This class implements the
getPropertyDescriptor() method by returning a
property descriptor array that contains one element, an instance of
java.beans.PropertyDescriptor for
propB. The problem here is that the property
named propA that comes from base class
AA is no longer being exposed. It certainly
isn’t the responsibility of the BBBeanInfo
class to create property descriptors for its base classes. First of
all, if class AA changes then
BBBeanInfo would have to be updated to reflect the
change. That doesn’t sound like a good idea. And if you had
class CC that extends class BB,
the BeanInfo class for CC would have to replicate
the property descriptors for AA and
BB. This is definitely not the right approach.
The java.beans.BeanInfo interface includes a method ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access