[Java] argomenti dei metodi incoerenti
non capisco queste righe di codice dagli appuntidel mio pof.
Un metodo:
public void metodo1(String s) throws Exception{
File file = new File(s);
Scanner scan = new Scanner(file);
Class1 c1 = Class1.metodoStatico(scan);
...
}
ora, il prototipo metodo metodoStatico della classe Class1 è:
public static Class1.metodoStatico(BufferedReader br)
ma non c'è coerenza tra gli argomenti o cmq tale codice non funziona; non dovrei creare un BufferedReader da passare a metodoStatico?
O avere un prototipo del tipo
public static Class1.metodoStatico(Scanner in)??
Un metodo:
public void metodo1(String s) throws Exception{
File file = new File(s);
Scanner scan = new Scanner(file);
Class1 c1 = Class1.metodoStatico(scan);
...
}
ora, il prototipo metodo metodoStatico della classe Class1 è:
public static Class1.metodoStatico(BufferedReader br)
ma non c'è coerenza tra gli argomenti o cmq tale codice non funziona; non dovrei creare un BufferedReader da passare a metodoStatico?
O avere un prototipo del tipo
public static Class1.metodoStatico(Scanner in)??
Risposte
inltre se nel metodo statico vado a fare scan.next() sarebbe da evitare il parametro scan perché commetto un effeto collaterale che in qualche modo potrei evitare, giusto?
Ciao,
Il codice è corretto, a patto che "Scanner" sia una classe derivata da "BufferedReader". Il prototipo di "metodostatico" ti dice che in ingresso vuole un'istanza di BufferedReader - se la classe Scanner è definita come:
allora un'istanza di Scanner va bene perchè questa *è* in effetti anche un'instanza di BufferedReader.
Semmai l'errore è un'altro:
manca di tipo di ritorno! Cosa ritorna quel metodo? Dall'altro codice che hai postato, arguisco un'istanza di Class1:
Questa non l'ho capita...
Ciao!
Fabio.
ma non c'è coerenza tra gli argomenti o cmq tale codice non funziona; non dovrei creare un BufferedReader da passare a metodoStatico?
Il codice è corretto, a patto che "Scanner" sia una classe derivata da "BufferedReader". Il prototipo di "metodostatico" ti dice che in ingresso vuole un'istanza di BufferedReader - se la classe Scanner è definita come:
class Scanner extends BufferedReader { ... }
allora un'istanza di Scanner va bene perchè questa *è* in effetti anche un'instanza di BufferedReader.
Semmai l'errore è un'altro:
public static Class1.metodoStatico(Scanner in)
manca di tipo di ritorno! Cosa ritorna quel metodo? Dall'altro codice che hai postato, arguisco un'istanza di Class1:
public static Class1 Class1.metodoStatico(Scanner in) { ... }
inltre se nel metodo statico vado a fare scan.next() sarebbe da evitare il parametro scan perché commetto un effeto collaterale che in qualche modo potrei evitare, giusto?
Questa non l'ho capita...

Ciao!
Fabio.