[JAVA] Point d'ajustement Apache Commons BeanUtils

Une note de ce qui s'est passé lors de l'utilisation de Apache Commons BeanUtils

Version confirmée
code de vérification

Bean.java

public class Bean {
	private Timestamp timestamp;

	public Timestamp getTimestamp() {
		return timestamp;
	}
	public void setTimestamp(Timestamp timestamp) {
		this.timestamp = timestamp;
	}
}

Main.java

public class Main {
	public static void main(String[] args) throws Exception {
		Bean bean = new Bean();

		// 1.9.Avant 3, objet.getClass()Est interprété comme un accesseur"class"Est inclus dans la liste des propriétés.
		BeanUtils.describe(bean);
		// => 1.9.Avant 3:{class=class test.Bean, timestamp=null}
		//    1.9.4:{timestamp=null}
		// ※ PropertyUtils.describe(bean)Donnera le même résultat.

		// 1.9.Avant 3, le comportement lors de la définition de propriétés inaccessibles avec setProperty et copyProperty est différent.
		BeanUtils.setProperty(bean, "class", Bean.class);
		// =>Rien n'est fait.
		BeanUtils.copyProperty(bean, "class", Bean.class);
		// => 1.9.Avant 3: java.lang.reflect.InvocationTargetException:Impossible de définir la classe.
		//    1.9.4: Rien n'est exécuté.(BEANUTILS-Le comportement a-t-il changé en raison de l'influence de 520? )

		//Le comportement lors de la tentative de définition de null pour certains types de propriétés est différent entre setProperty et copyProperty.
		BeanUtils.setProperty(bean, "timestamp", null);
		// => org.apache.commons.beanutils.ConversionException: No value specified for 'java.sql.Timestamp'Se produit.
		BeanUtils.copyProperty(bean, "timestamp", null);
		// => 1.8.Avant 3: une exception ConversionException s'est produite comme copyProperty.
		//    1.9.Après 0: rien n'est exécuté.(BEANUTILS-Fixé dans 454)
	}
}
référence

Recommended Posts

Point d'ajustement Apache Commons BeanUtils
Liste de points addictifs Apache POI
Sortie CSV par Apache Commons CSV