2010-12-14 3 views
2

Possible en double:
Can a single Java variable accept an array of either primitives or objects?Créer un tableau de primitives ou des objets en Java

Je veux créer une méthode qui accepte soit un tableau arbitraire. Le tableau peut être un tableau de primitives ou un tableau d'objets.

Malheureusement, je ne peux pas faire

public void myMethod(Object[] a) {...} 

parce que primitives ne sont pas des objets! Existe-t-il un moyen d'abstraire ce niveau supplémentaire? Je comprends que je peux le passer en tant qu'objet, mais comment puis-je y accéder en tant que tableau dans la méthode? Je ne peux pas faire:

public void myMethod(Object[] a) { 
    Object something = a[0]; 
    } 
+3

Dupe de http://stackoverflow.com/questions/1892599/can-a-single-java-variable-accept-an-array-of-either-primitives-or-objects –

Répondre

1

Tous les types de tableau sont de type objet, rien de plus sepecific.

import java.lang.reflect.Array; 

public void myMethod(Object array) { 
    Object first = Array.get(a, 0); // Object, primitives are wrapped. 
} 
1
import java.lang.reflect.Array; 

public void myMethod(Object[] a) 
{ 
    Array.get(a, 0);  
} 
+0

vous ne pouvez toujours pas passer un int [ ] à un objet [] –

0

Malheureusement, il n'y a pas de meilleure solution (pour le moment) que la surcharge myMethod pour gérer chaque type de type primitif que vous voulez gérer. Vous pouvez par exemple voir les signatures des méthodes binarySearch dans la classe Arrays

Bien sûr, vous pouvez également passer un Object et vérifier si elle est un tableau (et dans ce cas, vérifier le type de ce tableau) en utilisant la réflexion . Cependant, votre application deviendra moins protégée si vous le faites.

Questions connexes