我想使用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)相同
这里有什么问题?
答案 0 :(得分:11)
假设您正在使用Eclipse,请执行以下操作以确保您的合规性级别为1.6。
转到Project
- > Properties
- > Java Compiler
。确保Compiler compliance level
设置为1.6
。
您应该通过导航到Window
- >将该级别设置为默认值。 Preferences
- > Java
- > Compiler
。为1.6
选择Compiler compliance level
。
答案 1 :(得分:4)
有人应该解释一下:
@Override
。
在Java 1.5中,您不能在方法上使用@Override
来指示它旨在实现接口方法 - 编译器会将其标记为覆盖错误。在Java 1.5下,您只能使用@Override
来表示该方法正在覆盖超类方法。
从Java 1.6开始,您可以使用@Override
来指示该方法旨在实现接口方法(太糟糕了,它不是像@Implements
那样的单独注释。)
Eclipse有一个功能可以确保您的代码在特定版本的Java下编译,无论您安装的Java实际版本是什么 - 这都是Compiler Compliance Level
。如果它设置为1.5,即使你的JDK是1.6,编译器也会标记任何不能在Java 1.5下编译的代码。