[Java] argomenti dei metodi incoerenti

raff5184
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)??

Risposte
raff5184
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?

Il_Conte_Pasticcere
Ciao,

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.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.