Sto utilizzando una classe CSVReader che accetta un file locale come input. Ma ora, ho bisogno di essere in grado di leggere i file locali così come i file con un percorso URL (come http://example.com/example.txt). Per fare questo, voglio ottenere una classe da CSVReader che identifichi se il file è locale o URL, e quindi passare InputStream al genitore usando super() nella prima riga del costruttore. Qual è il modo elegante di farlo?Soluzione quando super non può essere la prima riga del costruttore in java
public class FileReader extends CsvReader{
public FileReader(){
if (fileName != null) {
if (fileName.trim().startsWith("http:")) {
// it is URL
URL url = new URL(fileName);
inputStream = new BufferedReader(new InputStreamReader(
url.openStream(), charset),
StaticSettings.MAX_FILE_BUFFER_SIZE);
}else{
//it is a local file
inputStream = new BufferedReader(new InputStreamReader(
new FileInputStream(fileName), charset),
StaticSettings.MAX_FILE_BUFFER_SIZE);
}
}
//Now pass the input stream to CsvReader
super(inputStream, delimiter, charset); //error - super has to be first line of constructor
}
}
Si prega di non chiamare le classi lo stesso nome di classi ben noti i n il JDK. Stai per causare a qualcuno una grande confusione, molto probabilmente te stesso. – EJP