Я до сих пор довольно новичок как в Java, так и в Android, и я работаю над проектом для Android-ридеров Android. Я пишу читателю, который работает как AsyncTask
, и хотел бы сохранить его как можно более удобным для использования. Я использую синтаксический анализатор SAX в читателе и хотел бы, чтобы он принял обработчик любого типа, который расширяет DefaultHandler
. Однако, когда я пытаюсь вызвать метод разбора SAXParser
, он не понимает параметр обработчика.Использование Generics как параметры
cannot resolve method 'parse(org.xml.sax.InputSource,java.lang.Class<capture<? extends org.xml.sax.helpers.DefaultHandler>>)'
Является ли это правильный путь идти об этой проблеме с точки зрения прохождения универсального обработчика, или есть что-то я должен делать по-другому?
public class RSSFeeder extends AsyncTask<Void, Void, Void>{
private Class<? extends DefaultHandler> handler;
private String feedURL;
public RSSFeeder(Class<? extends DefaultHandler> handler, String feedURL) {
this.handler = handler;
this.feedURL = feedURL;
}
@Override
protected Void doInBackground(Void... params) {
URL feedLocation = null;
try {
feedLocation = new URL(feedURL);
BufferedReader in = new BufferedReader(new InputStreamReader(feedLocation.openStream()));
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
sp.parse(new InputSource(in), handler);
} catch (MalformedURLException murlex) {
Log.d(this.getClass().getName(), "The supplied URL is not valid " + murlex.getMessage());
} catch (IOException iox) {
Log.d(this.getClass().getName(), "Could not read data from the supplied URL: " + feedLocation.toString() + " " + iox.getMessage());
} catch (ParserConfigurationException pcex) {
Log.d(this.getClass().getName(), "Could not configure new parser. " + pcex.getMessage());
} catch (SAXException saxex) {
Log.d(this.getClass().getName(), "Could not create new sax parser. " + saxex.getMessage());
}
return null;
}
ли продлить ваш обработчик DefaultHandler? –
Я еще не закодировал обработчик, но да, это будет так. Нужно ли мне все штук, чтобы собеседник это понял? – oapeter
Ну, для компиляции вам нужен ваш код для удовлетворения лексических, синтаксических и семантических правил, и правильные типы являются частью этого. @manouti дал несколько советов в своем ответе, поэтому попробуйте. Он выглядит хорошо :) –