最近在做一個jWebSocket Android客戶端的Demo時遇到如下錯誤:
"……The method onAccuracyChanged(Sensor, int) of type Fundamentals must override a superclass……"
"……The method onClick(View) of type new View.OnClickListener(){} must override a superclass…… "
“……The method onSensorChanged(SensorEvent) of type Fundamentals must override a superclass……”
相應的代碼如下:
[java]
lBtnSend.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
try {
JWC.broadcastText("pause");
} catch (WebSocketException ex) {
}
log(lBtnSend.getText());
if(lBtnSend.getText().equals("Pause")){
lBtnSend.setText("Begin");
}else{
lBtnSend.setText("Pause");
}
}
});
……
……
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
……
}
@Override
public void onSensorChanged(SensorEvent event) {
……
}
查找後發現是jdk版本的問題
解決辦法:
在Eclipse中依次打開:項目屬性–>javaCompiler,找到其中的complier compliance level 將1.5改為1.6。 就是說Java 1.5的編譯器默認對父類的方法進行覆蓋,采用@Override進行說明;但1.6已經擴展到對接口的方法,所以如果還是以Java 1.5的編譯器來編譯的話,會出現錯誤。 java的編譯器是1.6版本的,選擇編譯級別為1.6即可。
摘自 zyz511919766的專欄