Java

De Raccourcis

Syntaxe[modifier]

méthode à « n » arguments[modifier]

Pour passer « n » objets. o est un tableau de taille n. Cela peut aussi être un types primitifs.

public void exemple(Object ... o) {
	for (Object object : o) {
		System.out.println(object.getClass());
	}
}


Boucles[modifier]

Map[modifier]

Exemple pour parcourir un map avec un for :

for (Map.Entry<String, Object> entry : map.entrySet()) {
	Object o = entry.getValue();
	String k = entry.getKey();
}

Conversion[modifier]

Liste (collection) en tableau

String[] array = (String[]) list.toArray(new String[list.size()]);

Un float en double sans perte de précision :

float  f = 1.2F;
double d = Double.parseDouble(Float.toString(f));

Conversion d'une Map en List (suivant ses clefs ou suivant ses valeurs) :

Map<String, String> map = new HashMap<String, String>();
...
List<String> listKeys   = new ArrayList<String>(map.keySet());
List<String> listValues = new ArrayList<String>(map.values());

Annotation[modifier]

Récupérer le contenu d'une annotation. Exemple pour récupérer « value » de RequestMapping (du framework Spring) :

String annotationValue = "";
RequestMapping annotation = getClass().getAnnotation(RequestMapping.class);
if (annotation != null) {
	String[] annotationValues = annotation.value();
	if (annotationValues != null && annotationValues.length > 0) {
		annotationValue = getClass().getAnnotation(RequestMapping.class).value()[0];
	}
}

XML[modifier]

Un problème avec le DTD ?

SAXBuilder sxb = new SAXBuilder(false);
// évite une recherche d'emplacement fantaisiste du DTD lorsque ce n'est pas une URL
sxb.setFeature("http://xml.org/sax/features/validation", false);
sxb.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
sxb.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
// chargement du fichier
Document doc = sxb.build(Maclass.class.getResourceAsStream("/fichier.xml"));
Element racine = doc.getRootElement();

Clone[modifier]

Méthode simple pour cloner le contenue complet d'un objet. (Ne fonctionne pas forcement pour tout.)

@Override
public MonObject clone() {
	MonObject clone = null;
	try {
		clone = (MonObject) super.clone();
	} catch(final CloneNotSupportedException cnse) {
		cnse.printStackTrace(System.err);
	}
	return clone;
}

Type générique[modifier]

Casts[modifier]

Caster un objet vers le type générique « T » de la classe. Ce n'est pas très élégant de devoir passer par une méthode pour faire cela, mais je n'ai pas trouvé mieux.

public class Example<T> {
	protected T unsecureCast(Object o) {
		return (T) o;
	}
}

Caster un objet générique vers une classe dans un for.

for (T e : categories) {
	Object tmp = e;
	Date d = (Date) tmp;
	...
}

Opération[modifier]

Faire une addition avec des « Number ».

protected V addition(V valeur1, V valeur2) {
	Number val1 = valeur1;
	Number val2 = valeur2;
	Number re = 0;
	if (val1 instanceof Integer) {
		re = val1.intValue() + val2.intValue();
	} 
	else if (val1 instanceof Float) {
		re = val1.floatValue() + val2.floatValue();
	}
	return (V) re;
}

Classes[modifier]

Constantes[modifier]

Récupérer les constantes d'une classe

Class<?> c = Class.forName(getClassName());
 
Map<String, Object> map = new HashMap<String, Object>();
Field[] fields = c.getDeclaredFields();
for(Field field : fields)
{
	int modifier = field.getModifiers();
	if(Modifier.isPublic(modifier) && Modifier.isStatic(modifier) && Modifier.isFinal(modifier))
	{
		try
		{
			//Obj param of get method is ignored for static fields
			map.put(field.getName(), field.get(null));
		}
			catch(IllegalAccessException e)
		{ /* ignorable due to modifiers check */ }
	}
}

Web[modifier]

Cache[modifier]

Ne pas mettre en cache :

response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", -1);


Frameworks[modifier]