[英]Should I add support for PropertyChangeSupport and PropertyChangeListener in a Java bean for a web application?
[英]Test if a Java Bean have PropertyChangeSupport
是否有標准或最佳實踐的方法來了解POJO(普通的舊Java對象)是否具有PropertyChangeSupport?
是否有標准或最佳實踐的方法來了解POJO(普通的舊Java對象)是否具有PropertyChangeSupport?
PropertyChangeSupport
類通常用於在Bean類中實現對屬性更改的支持,因此我懷疑您真正想知道的是是否存在一種查看Bean類是否支持注冊PropertyChangeListeners
。
以以下示例bean類為例:
class Bean {
private String name;
private final PropertyChangeSupport pcs = new PropertyChangeSupport(this);
public String getName() {
return this.name;
}
public void setName(String name) {
String oldName = this.getName();
this.name = name;
this.pcs.firePropertyChange("name", oldName, name);
}
public void addPropertyChangeListener(PropertyChangeListener listener) {
this.pcs.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
this.pcs.removePropertyChangeListener(listener);
}
}
您可以使用Introspector類查詢Bean,並確定它是否提供屬性更改偵聽器的注冊,例如:
boolean supportsPropertyChangeListener = false;
BeanInfo info = Introspector.getBeanInfo(Bean.class);
EventSetDescriptor[] descriptors = info.getEventSetDescriptors();
for (EventSetDescriptor descriptor : descriptors) {
if (descriptor.getListenerType().equals(PropertyChangeListener.class)) {
supportsPropertyChangeListener = true;
}
}
System.out.println(supportsPropertyChangeListener);
我想不出標准的方法,但是一種方法是使用反射並遍歷類的屬性以查看是否有任何類型為PropertyChangeSupport
。
例如:
Field[] fields = clazz.getDeclaredFields();
for(Field field : fields) {
if(field. getType().equals(PropertyChangeSupport.class)) {
//do whatever you have to do
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.