Casten

hallo,

Ich habe eine Static Methode geschrieben die Object [] Array empfängt(Point) und bearbeitet und dann ein Object [] Array zurück gibt. Das Problem ist es sollte eingentlich ein Point Array zurückgeben. Um genauer zu sein sollte die Methode genau die Art von Array zurückgeben die es empfangen hat. Flexibil also.

Wie mach ich das?
 
Hallo,

schau mal hier:
Java:
/**
 * 
 */
package de.tutorials;

import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * @author Thomas.Darimont
 *
 */
public class ReturnArrayOfSameTypeExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        String[] strings = {"a","b","c"};
        
        String[] someStrings = op(strings);
        
        System.out.println(Arrays.toString(strings));
        System.out.println(Arrays.toString(someStrings));
        
    }

    @SuppressWarnings("unchecked")
    private static<TTargetType> TTargetType[] op(TTargetType[] arg) {
        if(null != arg){
            if(arg.getClass().isArray()){
                TTargetType[] newArray = (TTargetType[])Array.newInstance(arg.getClass().getComponentType(),arg.length);
                
                for(int i = 0; i <newArray.length;i++){
                    newArray[i] = create((Class<TTargetType>)arg.getClass().getComponentType());
                }
                
                return newArray;
            }
        }
        return null;
    }

    private static <TTargetType> TTargetType create(Class<TTargetType> clazz) {
        try {
            return clazz.newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

Gruß Tom
 
Zurück