Problema com métodos estáticos

Amigos de Fórum, sou iniciante de JAVA tenho apenas 3 meses de testes e aprendizados.

Estou sentindo uma dificuldade enorme para entender o funcionamento de um programa que estou desenvolvendo.

Bem…

Eu tenho um


public class GPS{
    static ArrayList lista = new ArrayList();
    Tarefa tar = (Tarefa) lista.get(0);

    Coordinates repassaCoordenadas(){
    Coordinates c = new Coordinates(tar.lat,tar.lon,Float.NaN);
    return c;
    }
}

onde essa lista é preenchida por um parser

eu queria usar esse método repassaCoordenadas() no meu programa principal.

criando uma variável

Só que dá erro dizendo:

non-static method repassaCoordenadas() cannot be referenceded from static context

PS:

O parseamento é feito por um try{}catch{}

antes de ser acionado o método para se utilizar

Alguem pode me ajudar a resolver esse probleminha?

Olá!

Você já deve ter visto que uma classe Java é um “modelo” para criar um objeto específico.
Isso significa que atributos e métodos que não são estáticos, só podem ser chamados através de uma instância (um objeto) da classe.
No caso de atributos estáticos, você pode chamá-los diretamente através da classe, ou seja, você não precisa de uma instância de um objeto.
Neste caso, métodos estáticos só podem acessar atributos que também são estáticos, uma vez que atributos normais não existem enquanto uma instância não for realizada.

Ajudei?

[quote=cleliodpaula]Amigos de Fórum, sou iniciante de JAVA tenho apenas 3 meses de testes e aprendizados.

Estou sentindo uma dificuldade enorme para entender o funcionamento de um programa que estou desenvolvendo.

Bem…

Eu tenho um


public class GPS{
    static ArrayList lista = new ArrayList();
    Tarefa tar = (Tarefa) lista.get(0);

    Coordinates repassaCoordenadas(){
    Coordinates c = new Coordinates(tar.lat,tar.lon,Float.NaN);
    return c;
    }
}

onde essa lista é preenchida por um parser

eu queria usar esse método repassaCoordenadas() no meu programa principal.

criando uma variável

Só que dá erro dizendo:

non-static method repassaCoordenadas() cannot be referenceded from static context

PS:

O parseamento é feito por um try{}catch{}

antes de ser acionado o método para se utilizar

Alguem pode me ajudar a resolver esse probleminha?[/quote]

O erro diz que o método repassaCoordenadas não é estático e esta sendo chamado dentro de um contexto estático, por exemplo o método main

Para resolver isso basta colocar a palavra static antes do método também.

Agora a pergunta, porque você precisa de um método estático para fazer isso?

Caso você ainda não tenha visto tem um tutorial bom aqui no site que pode te ajudar a entender um pouco

Tome cuidado ao usar muito método estático, é dificil você debugar depois, algumas pessoas mais rigorosas dizem que método estáticos fogem um pouco do paradigma de orientação a objetos e devem ser utilizados apenas para classes utilitárias - por exemplo, quando você vai fazer o log

t+

Eu não preciso de um método estático.

Eu só queria usar os dados que eu peguei do parseamento e utilizá-los na classe principal como argumento de outros métodos.

E esses dados não podem ser estáticos.

Mas pelo que eu ví, precisarei dar uma reajustada, não exatamente aonde. Mas terei.

Obrigado pela ajuda, acho que entendi os complicadores do static.