如何创建一个可以将多个类作为输入的方法

时间:2015-07-20 00:27:38

标签: java android methods

以例如:

public static String[] multipleOfSameSet(String var,int setLength){
    String[] out = new String[setLength];
    for(int i=0; i<setLength; i++){
        out[i] = var;
    }
    return out;
}

但我希望这适用于int,double和其他10个类。 我尝试使用一个类代替String,它给了我一个错误的世界。这里:

甚至可能吗?如果是,我该怎么做?

2 个答案:

答案 0 :(得分:3)

是的,这是可能的。一种选择是尝试找到一个类,它是您要使用的所有类的超类,或者是您所有类实现的接口。在您的情况下,唯一的候选人可能是对象:

public static Object[] multipleOfSameSet(Object var, int setLength) {
    Object[] out = new Object[setLength];
    for(int i = 0; i < setLength; i++) {
        out[i] = var;
    }
    return out;
}

这将起作用,因为所有Java类都直接或间接地扩展Object。原始值会自动转换为对象(整数变为Integer s,双精度变为Double等等。

这种方法的缺点是,你得到了一个对象数组,并且你可以用它们做很多事情。你可能想要考虑的是让你的方法接受一些泛型类型T,并返回一个T的ArrayList:

public static <T> ArrayList<T> multipleOfSameSet(T object, int setLength) {
    ArrayList<T> out = new ArrayList<T>();
    for(int i = 0; i < setLength; i++) {
        out.add(object);
    }
    return out;
}

但是,如果您之后不需要修改列表,我会选择:

public static <T> List<T> multipleOfSameSet(T object, int setLength) {
    return Collections.nCopies(setLength, object);
}

答案 1 :(得分:0)

您可以使用接口或定义的类类型。

public static MyInterface[] multipleOfSameSet(MyInterface var, int setLength) {
    MyInterface[] out = new MyInterface[setLength];
    for(int i = 0; i < setLength; i++) {
        out[i] = var;
    }
    return out;
}