Невозможно переопределить методы класса LocationListener - PullRequest
4 голосов
/ 03 февраля 2011

Я хочу получить текущее местоположение с помощью GPS.

Вот мой сценарий.Мое определение класса:

public class UseGps extends Activity implements LocationListener

Если Í попытаться переопределить методы LocationListener, как это

1)

@Override 
public void onLocationChanged(Location loc)

2)

@Override
public void onProviderDisabled(String provider)

3)

@Override
public void onProviderEnabled(String provider)

это дает мне ошибку компиляции, говоря:

The method onStatusChanged(String, int, Bundle) of type UseGps must override a superclass method remove override.

То же самое для 2) и 3)

Что такоездесь не так?

Ответы [ 2 ]

11 голосов
/ 03 февраля 2011

Предполагая, что вы используете Eclipse, сделайте следующее, чтобы убедиться, что ваш уровень соответствия равен 1,6.

Перейдите к Project -> Properties -> Java Compiler.Там убедитесь, что Compiler compliance level установлен на 1.6.

Вы должны установить этот уровень в качестве значения по умолчанию, перейдя к Window -> Preferences -> Java -> Compiler,Выберите 1.6 для Compiler compliance level.

4 голосов
/ 03 февраля 2011

Кто-то, вероятно, должен объяснить, что:

  1. @Override не поддерживалось для интерфейсов до Java 1.6.

  2. В Java 1.5,Вы не можете использовать @Override для метода, чтобы указать, что он предназначен для реализации метода интерфейса - компилятор пометит его как ошибку переопределения.В Java 1.5 вы можете использовать @Override только для указания того, что метод переопределяет метод суперкласса.

  3. Начиная с Java 1.6, вы можете использовать @Override, чтобы указать, что методпредназначен для реализации метода интерфейса (очень жаль, что это не отдельная аннотация, такая как @Implements).

  4. Eclipse имеет функцию, которая может гарантировать, что ваш код компилируется в определенной версии JavaНезависимо от того, какую версию Java вы установили - это Compiler Compliance Level.Если он установлен на 1,5, даже если JDK равен 1.6, компилятор будет отмечать любой код, который не будет компилироваться в Java 1.5.

...