Test.java |
import java.lang.reflect.*; public class Test { public static void main(String[] args) throws Exception { // Récupération de la classe Date à partir de son nom Class classDate = Class.forName("java.util.Date"); // Création d'une nouvelle instance, comme avec un new Object myDate = classDate.newInstance(); // Récupération de la méthode toString() de la classe Date // La méthode getMethod() a comme premier paramètre le nom de la // méthode à récupérer, et comme second le tableau des types de ses // paramètres. Passer null comme second argument revient à passer // un tableau vide. Method myOutput = classDate.getMethod("toString",null); // Appel de la méthode toString() sur myDate sans arguments System.out.println((String) myOutput.invoke(myDate,null)); /* Maintenant, on veut créer la date correspondant à un entier long de valeur 0, comme pour le constructeur Date(long date). */ // Tableau des classes des paramètres du constructeur Class[] classParamArray = {long.class}; // Récupération du constructeur qui prend ces paramètres Constructor init = classDate.getConstructor(classParamArray); // Tableau des valeurs à passer en argument du constructeur. Object[] initParamArray = {new Long(0)}; // Création de l'instance, comme avec un new Date(0) Object dateZero = init.newInstance(initParamArray); // Appel de la méthode d'affichage sur dateZero System.out.println((String) myOutput.invoke(dateZero,null)); } }