Est-il possible de créer des variables lors de l'exécution en Java?

Par exemple, dire que je voulais "extrait de" String[] fruits = {"Pear", "Banana", "Apple"}; en trois variables, par exemple:

for (int i=0; i != fruits.length; ++i) {
    //of course there's no eval in Java
    eval("String fruit + i = " + fruits[i] + ";"); 
}

//ie: code that creates something equivalent to the following declarations:
String fruit0 = "Pear";
String fruit1 = "Banana";
String fruit2 = "Apple";

Comment pourrais-je le faire, en ignorant le "Pourquoi diable voudriez-vous faire cela?" question que vous pourriez être invités à me demander.

Questions similaires ont été posées de nombreuses fois avant, mais la vraie réponse n'a jamais été donné, parce que ce que l'OP a vraiment besoin, c'était d'utiliser une approche différente. C'est très bien, mais est-ce possible?

J'ai regardé la réflexion et il ne semble pas comme il existe des méthodes qui me permettrait même d'ajouter des champs supplémentaires à une instance, a fortiori, de créer dynamiquement des habitants.

La seule façon que je pouvais penser est d'utiliser runtime octet de l'injection de code. Comme par meilleur de ma connaissance, nous ne pouvons pas créer des variables dynamiques avant la compilation.
Laissez-moi deviner, vous êtes principalement un programmeur PHP, n'est-ce pas? Suis-je le fermer?
Je pense que java.lang.reflect.Proxy est à peu près aussi proche que vous pouvez aller. Même alors, vous ne pouvez mettre en œuvre des choses qui ont été définis au moment de la compilation.
Oui, mais vous ne pouvez pas être en mesure de les utiliser en dehors du code créé par le biais du mécanisme (sauf une interface cohérente).
Je n'ai jamais utilisé que (création de nouveaux habitants sur la pile) dans le code réel en PHP/Python/JS, mais le fait est, il est là, si jamais j'ai besoin. L'autre caractéristique, l'ajout dynamique de membres d'une instance, est beaucoup plus utile.

OriginalL'auteur NullUserException | 2011-09-20