Fluxo fechado e não reaberto - Java
Tenho uma tarefa fácil de fazer, mas encontrei um pequeno problema com o fechamento do fluxo de entrada. Simplificando, eu tenho que fazer um aplicativo de 'lista' de contatos em Java, apenas para usar o polimorfismo da maneira correta. Então, eu tenho uma classe Contact e uma subclasse Private (contact). Nas duas classes, existe um método de modificação para alterar o valor das variáveis.
public void modify() throws IOException {
System.out.println("Previously name: " + name);
System.out.println("Insert new name");
try(InputStreamReader ir = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(ir) ) {
name= in.readLine();
System.out.println("You've changed the name to: "+ name);
System.out.println("Previously surname: " + surname);
System.out.println("Insert new surname");
surname= in.readLine();
System.out.println("You've changed the surname to: "+ surname);
System.out.println("Previously e-mail: " + email);
System.out.println("Insert new e-mail");
email = in.readLine();
System.out.println("You've changed the e-mail to: "+ email); }
}
Este é o método de contato que não cria problema
@Override
public void modify() throws IOException {
super.modifica();
System.out.println("Numero di cellulare precedente: " + cell);
System.out.println("Inserire nuovo numero");
try (InputStreamReader ir = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(ir)) {
cell = in.readLine();
System.out.println("Hai cambiato il numero in: "+ cell);
System.out.println("Contatto skype precedente: " + skype);
System.out.println("Inserire nuovo contatto");
skype = in.readLine();
System.out.println("Hai cambiato il contatto in: "+ skype);
}
}
Em vez disso, essa é a substituição do método em Privado. Em geral, eu crio um objeto Privado e chamo o método modify. Posso inserir nome, sobrenome e email sem problemas, e o método lança uma exceção de E / S porque o fluxo está fechado. Não consigo entender por que tenho esse tipo de problema. Eu acho que o fluxo é fechado por tentativa com recursos no primeiro código, mas depois é aberto no segundo código por outra tentativa com recursos. Provavelmente algo na minha ideia está errado.