Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Reduzindo o codigo que vai rodar no main

Opa Devs queria dividir com vocês o que eu fiz seu que não é boa pratica criar um classe que guarda apenas um metodo, mas não consegui criar uma class Anomina para isso, acho que seria necessario criar um interface para poder criar essa classe anonima neste exemplo, mas pelo menos agora é possivel acessar o texto de muitos aquivos com apenas 1 linha.

package br.com.fernando.java.io.teste;

import java.io.*;

public class TesteSimplificado {
    public static void main(String[] args) throws IOException {

        // --V-- Lendo a primeira linha do arquivo atraves de um objeto.
        ClassProcessandoArquivos leitor = new ClassProcessandoArquivos();
        System.out.println(leitor.LerLinha("pokemon.txt"));

    }
}


class ClassProcessandoArquivos {// --> Contem todo o metodo de entra e saida.

    public String LerLinha(String arquivo) throws IOException {
        FileInputStream file = new FileInputStream(arquivo);
        InputStreamReader ler = new InputStreamReader(file);
        BufferedReader br = new BufferedReader(ler);
        String texto = br.readLine();
        br.close();
        return texto;    
    }
}

Fica ai esse monolito kkkk, se alguem puder responder a duvida de cima, se seria necessario implimentar uma interface para criar uma funcação anonima agradeço.

2 respostas
solução!

Oie Fernando, tudo bem contigo?

As classes anônimas podem ser usadas em outras situações não apenas quando existe uma interface. Elas podem ser implementadas usando classes, sendo elas abstratas ou não, e com interfaces.

No seu código implementando a classe anônima ficaria assim:

Uma classe ou interface deve ser criada, no meu caso decidi criar uma classe abstrata:

import java.io.IOException;

public abstract class ClassProcessandoArquivos {
    public abstract String LerLinha(String arquivo) throws IOException;
}

Na classe teste é só fazer a seguinte implementação:

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class Teste {

    public static void main(String[] args) throws IOException {

        // --V-- Lendo a primeira linha do arquivo atraves de um objeto.
        ClassProcessandoArquivos leitor = new ClassProcessandoArquivos() {

            @Override
            public String LerLinha(String arquivo) throws IOException {
                FileInputStream file = new FileInputStream(arquivo);
                InputStreamReader ler = new InputStreamReader(file);
                BufferedReader br = new BufferedReader(ler);
                String texto = br.readLine();
                br.close();
                return texto;
            }
        };
    }    
}

Eu achei dois artigos, um em inglês e outro em português que explica muito bem sobre as classês anônimas, segue os links:

Espero ter ajudado, se houver qualquer outra dúvida é só mandar por aqui :)

Bons estudos!

Basicamente eu entendi então, para criar uma classe anonima antes é necessario que a class que vai se referenciar a ela exista, muito obrigado igor.