2012-02-19 22 views

Respuesta

9

objetos Java Todo extender la clase Object. Por lo que puede hacer su función acepta una gran variedad de objetos:

public void func(Object[] args) { 
} 

O si usted quiere ser capaz de pasar nada:

public void func(Object... args) { 
} 
5
public void omnivore(Object... args) { 
    // what now? 
} 

En Java, una variable de cualquier tipo de referencia (objetos y las matrices), incluyendo los de algún tipo genérico, incluso comodines, se pueden pasar a un parámetro de tipo de objeto. Una variable de cualquier tipo primitivo se puede autocapturar a su tipo de envoltura correspondiente, que es un tipo de referencia, por lo que se puede pasar como Objeto. Por lo tanto, Object... aceptará cualquier cantidad de cualquier cosa.

3

Utilice esta sintaxis:

void myMethod(Object... args) { 
    // Here, args is an array of java.lang.Object: 
    // you can take its length, get its elements with [i] operator, 
    // and so on. 
} 
1

Lo más cerca que se obtiene es someMethod(Object ... args).

Estrictamente, esto no acepta todos los tipos de argumentos. Específicamente, no acepta tipos primitivos: estos deben encasillarse en los tipos de envoltura correspondientes. Normalmente esto no hace diferencia. Pero lo hace si necesita distinguir entre tipos primitivos y de envoltura en el método llamado.

+0

gracias por su respuesta. En realidad, estoy experimentando con su sugerencia 'someMethod (Object ... args)' y parece que no hay problema en pasar los tipos primitivo y de objeto. Lo he usado como una prueba y no tengo errores: 'someMethod (99, 1.23," A String ", new String (" A Wrapper String "), anObject);' pero tal vez Java está envolviendo los primativos para mí, quien sabe :) –

+1

@fleawhale - Está ** envolviéndolos para usted (autoboxing). Pero mi punto es que el método llamado no puede distinguir los casos en que la persona que llama proporcionó un valor primitivo que fue autoboxado a partir del caso en que suministró explícitamente el objeto envoltorio. –

+0

aplausos, ¡esto tiene sentido ahora! –

Cuestiones relacionadas