Meu metodo collections.sort (com comparable não executa)!

//Bom dia Galera , sou estudando inicial e estou tentando ordenar algumas coias de forma aleatória mas ta dando esse erro e não estou conseguindo entender o que preciso fazer.
Obrigado pela ajuda !

 -> Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	No enclosing instance of type TempMesesAno is accessible. Must qualify the allocation with an enclosing instance of type TempMesesAno (e.g. x.new A() where x is an instance of TempMesesAno).
package w3schoolspackage;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class TempMesesAno implements Comparable<TempMesesAno> {
	@Override
	public String toString() {
		return "TempMesesAno [mes=" + mes + ", temperatura=" + temperatura + "]";
	}
	private String mes;
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((mes == null) ? 0 : mes.hashCode());
		result = prime * result + ((temperatura == null) ? 0 : temperatura.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		TempMesesAno other = (TempMesesAno) obj;
		if (mes == null) {
			if (other.mes != null)
				return false;
		} else if (!mes.equals(other.mes))
			return false;
		if (temperatura == null) {
			if (other.temperatura != null)
				return false;
		} else if (!temperatura.equals(other.temperatura))
			return false;
		return true;
	}
	private Double temperatura;

	public TempMesesAno(String mes, double temperatura) {
		super();
		this.mes = mes;
		this.temperatura = temperatura;
	}

	public String getMes() {
		return mes;
	}

	public void setMes(String mes) {
		this.mes = mes;
	}

	public double getTemperatura() {
		return temperatura;
	}

	public void setTemperatura(double temperatura) {
		this.temperatura = temperatura;
	}

	public int compareTo(TempMesesAno o) {
		// TODO Auto-generated method stub
		return this.temperatura.compareTo(o.getTemperatura());
	}

	class cadaMes implements Comparator<TempMesesAno>{
		public int compare(TempMesesAno o1, TempMesesAno o2) {
			return o1.getMes().compareTo(o2.getMes());
		
		}
	}
	
	public static void main(String[] args) {
	
		List<TempMesesAno> listaMes = new ArrayList<TempMesesAno>();
	
		TempMesesAno mes1 = new TempMesesAno ("janeiro", 100);
		TempMesesAno mes2 = new TempMesesAno ("dezembro", 50);
		TempMesesAno mes3 = new TempMesesAno ("julho", 90);
		
		listaMes.add(mes1);
		listaMes.add(mes2);
		listaMes.add(mes3);

		Collections.sort(listaMes, new cadaMes()); // aqui aparece o erro que falei !
	}
}

O método main é estático mas a classe cadaMes não é.
Você não pode acessar código não-estático dentro de código estático.

Não recomendo ficar implementando tudo dentro do método main, cria um método não-estático executar por exemplo, e no main você simplesmente cria um objeto da sua classe e chama o método executar.

1 curtida

Muito obrigado Staroski, o problema era esse mesmo.Vou estudar mais sobre os métodos e seguir a recomendação. Abraços. :grin: