Nomes JavaBeans válidos para methods getter booleanos

Eu sei que a maioria dos nomes de variables ​​funcionará com “is”, como isBlue() , mas “tem” também um prefixo válido, como hasProperty() ?

De acordo com a seção 8.3.2 da especificação JavaBeans :

Propriedades booleanas
Além disso, para propriedades booleanas, permitimos que um método getter corresponda ao padrão:

public boolean is();

Esse método ” isPropertyName ” pode ser fornecido em vez de um método ” get ” ou pode ser fornecido além de um método ” get “. Em ambos os casos, se o método is estiver presente para uma propriedade booleana, usaremos o método ” is ” para ler o valor da propriedade. Um exemplo de propriedade booleana pode ser:

public booleano isMarsupial (); public void setMarsupial (boolean m);

Em outras palavras, a menos que algo tenha mudado desde então, não has um prefixo válido.

É possível que algumas ferramentas e bibliotecas reconheçam essas propriedades de qualquer maneira, mas não é uma boa ideia confiar nelas.

Jon Skeet observou que, de acordo com a especificação, isso não é válido. Além disso, canX , shouldX e os likes não são válidos. O que é bastante infeliz. Aqui está uma maneira de verificar se uma dada propriedade tem um getter válido:

 BeanInfo info = Introspector.getBeanInfo(Item.class); Item itm = new Item(); for (PropertyDescriptor pd : info.getPropertyDescriptors()) { System.out.println(pd.getName() + " : " + pd.getReadMethod()); } 

A class Item deve ser um javabean com uma propriedade foo e um getter. Se o método de leitura for null , significa que não há nenhum getter válido definido de acordo com a especificação do javabeans.

Isso é um pouco subjetivo, mas sim, eu diria que “has” é um prefixo perfeitamente válido para uma propriedade booleana.

editar a pergunta, como solicitado, não mencionou a especificação javabeans e por isso a minha resposta não abordou esse aspecto da questão. Daí a resposta acima.

    Intereting Posts