когда я выполняю приведенный ниже код, я получаю исключение приведения класса. Я верю, что объект пытается создать с помощью класса, может ли кто-нибудь мне помочь
public abstract AGridFilterMenu refreshFilters();
public AGridFilterMenu supportFilter(String style, Class<? extends AFilterItem> clazz, By... childLocators) {
ArrayList<Class<By>> signature = new ArrayList<>();
for(int i = 0; i< childLocators.length; i++) {
signature.add(By.class);
}
try {
Constructor<? extends AFilterItem> construct = clazz.getConstructor((Class<?>[]) signature.toArray());
constructors.put(style, construct);
filteritemChildLocators.put(style, childLocators);
} catch (NoSuchMethodException | SecurityException e) {
throw new TestCodeException("Unsupported FilterItem signature", e);
}
return this;
}
public AFilterItem getFilter(String filterName) {
logger.trace(String.format("Retrieving filter %s", filterName));
AFilterItem item = filters.get(filterName);`enter code here`
item.bind();
return item;
}
Пожалуйста, укажите точную ошибку, а также укажите, в какой строке вы получаете исключение.
Пожалуйста, поделитесь своими деталями отладки, люди здесь могут помочь вам более четко, если вы более четко сформулируете свой вопрос.




Проблема в том, что метод Object[] List.toArray() возвращает массив Object и его нельзя преобразовать в массив Class<?>.
К счастью, есть более подходящий метод T[] List.toArray(T[]), но вам нужно подготовить экземпляр массива определенного размера и типа для хранения результата.
Имейте в виду, что в случае ArrayList и аргумент, и возвращаемое значение являются одним и тем же экземпляром массива, который изменяется внутри метода toArray.
Class<?>[] signatureArray = new Class<?>[signature.size()];
signature.toArray(signatureArray);
Constructor<? extends AFilterItem> construct = clazz.getConstructor(signatureArray);
Вам не нужно подготавливать массив соответствия размера. Это просто лучшая производительность, потому что массив соответствия размера используется напрямую. В противном случае создается массив соответствия размера. Я использую либо массив постоянного нулевого размера, либо действительно новый массив соответствия размера.
@jokster, вы правы - точный контракт метода находится в javadoc.
Пожалуйста, редактировать ваш пост и добавьте ПОЛНУЮ трассировку стека; укажите, какой оператор в вашем коде вызывает исключение.