java.lang.AbstractMethodError

今天在寫完基礎類後,編輯用戶的時候發生java.lang.AbstractMethodError:com.text.UserDaoImpl.editById(Ljava/lang/Integer;)Ljava/lang/Object異常。非常奇怪,認真的從controller->service->dao調用過程查看了一番,參數類型都正常,可是怎麼就發生類型轉換了呢?java

正確設計以下:ide

這個問題是由於接口中定義的方法名和實現類的的方法名相同,可是參數的數據類型卻不一致,並且實現類的方法沒有@Override形成的。設計

因此在實現接口或覆寫父類方法時,最好的實踐是加上@Override。code

錯誤代碼:接口

public interface UserDao<T>{
    void editById(Integer id);
}

public UserDaoImpl<T,ID extends Serializable> implements UserDao<T>{
    public void editById(ID id){
        System.out.println("edit");
    }
}

正確代碼:it

public interface UserDao<T>{
    void editById(Integer id);
}

public UserDaoImpl<T,ID extends Serializable> implements UserDao<T>{
    @Override
    public void editById(Integer id){
        System.out.println("edit" + (ID)id);
    }
}
相關文章
相關標籤/搜索