Как передать переменную в исключение при его возникновении и получить его при исключении?

У меня была аналогичная проблема с вызовом правого конструктора класса под названием «Параметр», который мог бы принимать несколько базовых типов Java, таких как String, Integer, Boolean, Long и т. д. Учитывая массив объектов, я хочу их преобразовать в массив объектов Parameter, вызывая наиболее специфичный конструктор для каждого объекта во входном массиве. Я также хотел определить конструктор Parameter (Object o), который бы выбрал исключение IllegalArgumentException. Я, конечно, нашел, что этот метод вызывается для каждого объекта в моем массиве.

Решение, которое я использовал, - это поиск конструктора через отражение ...

public Parameter[] convertObjectsToParameters(Object[] objArray) {
    Parameter[] paramArray = new Parameter[objArray.length];
    int i = 0;
    for (Object obj : objArray) {
        try {
            Constructor<Parameter> cons = Parameter.class.getConstructor(obj.getClass());
            paramArray[i++] = cons.newInstance(obj);
        } catch (Exception e) {
            throw new IllegalArgumentException("This method can't handle objects of type: " + obj.getClass(), e);
        }
    }
    return paramArray;
}

Не требуется уродливого экземпляра, операторов switch или шаблона посетителя! :) [/ Д2]

21
задан Takkun 8 July 2011 в 15:35
поделиться