2010-10-01 4 views
1

Je veux créer quelque chose que je ne peux décrire comme une «méthode d'usine de code». Pour éviter la répétition de code, je veux créer une méthode qui contient le code à exécuter, mais avec des "espaces réservés" où les types sont supposés aller. La méthode prend bien sûr ces types comme paramètres et place chacun à son endroit approprié. Par exemple:méthode usine de code

void factory(placeholder1, placeholder2){ 
    ArrayList<placeholder1> List = new ArrayList<placeholder1>; 
    Placeholder2 variable; 
} 
factory(String, Integer); 

céderais:

ArrayList<String> List = new ArrayList<String>; 
Integer variable; 

des idées comment j'aller à ce sujet?

Votre aide est grandement appréciée.

EDIT: Merci pour tous les commentaires. J'y allais avec l'approche générique et ça a fonctionné pendant un certain temps jusqu'à ce que je croise ce que je crois que quelqu'un a mentionné plus tôt. Je veux utiliser l'une des méthodes dans l'un des objets génériques comme:

Entier variable = new Entier();
variable.isInteger();

Il ne semble pas que je serai capable de le faire en utilisant des génériques. Y a-t-il une solution possible à cela?

+3

Vous pourriez bénéficier d'un tutoriel sur les génériques: http://download.oracle.com/javase/tutorial/extra/ generics/index.html –

+2

En java, la technique pour "élaborer un code qui s'exécute à plusieurs endroits et permettre la réutilisation du code" est "créer une méthode contenant le code". Ce que vous faites dans votre exemple décrit la technique de "réutilisation par duplication" qui tire parti d'un précompilateur (par exemple, en C) et qui n'est pas supportée dans le langage Java. – DwB

+0

@dwb, pensez-vous que l'OP cherche quelque chose en dehors des génériques Java? –

Répondre

2

Voilà comment il regarderait:

<placeholder1, placeholder2> void factory(){ 
    ArrayList<placeholder1> List = new ArrayList<placeholder1>; 
    placeholder2 variable; 
} 
this.<String, Integer> factory(); 

Mais je suis d'accord avec mat que vous devriez lire sur les génériques. En outre, soyez prudent de l'effacement de type car cela pourrait ne pas faire tout ce que vous attendez.

2

Plutôt que d'adopter simplement des génériques, il semble que vous souhaitiez une sorte de macro-installation. Java n'a pas ça. Par exemple, pour développer votre exemple un peu, on ne pouvait pas faire quelque chose comme ça:

factory(String, Integer); 
List.get(variable); 
Questions connexes