2010-12-14 7 views
2
eine Reihe von Grundelementen oder Objekten in Java

Mögliche Duplizieren:
Can a single Java variable accept an array of either primitives or objects?Erstellen

Ich will ein Verfahren schaffen, die entweder eine beliebige Array akzeptiert. Das Array kann ein Array von Primitiven oder ein Array von Objekten sein.

Leider kann ich nicht

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

weil Primitive sind keine Objekte! Gibt es eine Möglichkeit, diese eine Ebene weiter zu abstrahieren?

EDIT Ich verstehe, dass ich es als ein Objekt übergeben kann, aber wie kann ich dann als ein Array innerhalb der Methode zugreifen? Ich kann es nicht tun:

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

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

Antwort

1

Alle Array-Typen sind vom Typ Object, nichts mehr 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

Sie können immer noch nicht int übergeben [ ] zu einem Objekt [] –

0

Leider gibt es keine bessere Lösung (im Moment) als myMethod Überlastung jede Art von primitivem Typ, den Sie behandeln möchten zu behandeln. Sie können zum Beispiel sehen die Unterschriften der binarySearch Methoden in der Klasse Arrays

Natürlich können Sie auch eine Object passieren kann und überprüfen, ob es ein Array ist (und in diesem Fall überprüfen Sie den Typ dieses Array) mithilfe von Reflektion . Ihre Anwendung wird jedoch weniger typsicher, wenn Sie dies tun.

Verwandte Themen