Я использую java для создания проекта ведения журнала, и я нахожу метод, который хочет иметь параметр формы Class<HostResolver> hostResolver
, где HostResolver .class - это интерфейс. Может ли кто-нибудь предположить, что я должен здесь проходить?Как передать переменную формы «Класс <HostResolver> hostResolver»
Если я перейду в HostResolver.class, он примет его как параметр, но затем сбой на hostResolver.newInstance(). Однако, если я передаю реализацию HostResolver, это говорит о том, что метод не подходит для этого метода.
Вот конкретный метод.
protected static HostResolver createHostResolver(final Class<HostResolver> hostResolver) throws
IllegalAccessException, InstantiationException {
return hostResolver.newInstance();
}
Этот метод объявляется плохо. Тип параметра должен быть «Class расширяет HostResolver> '. Требование, чтобы параметр * был * 'HostResolver', когда' HostResolver' является интерфейсом, просто неверно. Если вы не можете изменить метод, вы можете обойти эту проблему с еще худшим кодом: 'createHostResolver ((Class) MyHostResolver.class)'. Исходная команда 'Class' будет обходить проблему, но это * hack! * – Andreas
Спасибо, оказывается, что метод должен был быть Class расширяет HostResolver>, но это изменение не было пропущено. – annedroiid