[Dúvida] Dúvida sobre escopo [RESOLVIDO]

3 respostas
InsaneChess

Pessoal, boa tarde.
Alguem poderia me informar o motivo do "System.out.println(songList);" não funcionar dentro do Método Main?
Eu sei que se por ele no final do addSong(), vai funcionar...

Mais gostaria que alguem me explica-se por favor o por quê que do System.out.println não funcionar dentro do Main.
Obrigado!!!!

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;

public class Jukebox{
    
    ArrayList<String> songList = new ArrayList<String>();
    FileWriter arquivo;
    
    public static void main(String[] args){
        Jukebox box = new Jukebox();
        box.go();
        System.out.println(songList);
        
    }
    
    public void go(){
        
        File file = new File("Mybox.txt"); 
        
        
        try{
            if(file.exists() == true){    
            arquivo = new FileWriter("Mybox.txt",true);
            addSong();
            }
            else{
            System.out.println("O arquivo nao existe, criamos um para voce.");    
            arquivo = new FileWriter("Mybox.txt");
            
            PrintWriter lapis = new PrintWriter(arquivo, true);
            lapis.println("Within Temptation/Angels");
            lapis.println("Legiao Urbana/Faroeste Caboclo");
            lapis.println("Lacrimosa/Bresso");
            lapis.println("The Corrs/Feathers");
            lapis.println("Lacrimosa/Bresso");
            lapis.println("Vivaldi/Primaveira");
            lapis.println("Beethoven/Nona sinfonia");
            lapis.println("Bach/Minuet 1 ");
            lapis.close();
            arquivo.close();
            addSong();
            }
        }
        catch(Exception e){
            
        }
        
    }
    
    public void addSong() throws Exception{
    File file = new File("Mybox.txt");    
    FileReader leitor = new FileReader(file);
    BufferedReader buffer = new BufferedReader(leitor);
    String Token;
       while((Token = buffer.readLine()) != null){
        String[] separador = Token.split("/");
        songList.add(separador[0]);
       }
      
       
       
    }
}

3 Respostas

ViniGodoy

O main é um método estático. Por isso, ele só pode acessar variáveis estáticas.

Método estáticos não pertencem a objeto nenhum da classe, por isso, não podem acessar variáveis que sejam de objetos diretamente.

ViniGodoy

Você pode corrigir fazendo:

System.out.println(box.songList);

Assim vc especifica um objeto, que tem um songList.

InsaneChess

Obrigado ViniGodoy!
Hehe, tava difícil entender…

Porém consegui absorver o que você disse quando postou o segundo comentário referente a especifícação de um objeto.
Uma boa semana.

Criado 21 de setembro de 2010
Ultima resposta 22 de set. de 2010
Respostas 3
Participantes 2