实现接口 - 方法签名错误

时间:2015-09-18 05:54:01

标签: java android android-studio interface

我有这个界面:

public interface IAppointmentDAO extends IAppointmentDate {
    void close();

    void deleteAppointment(long id);

    Appointment getAppointment(long id);

    List<Appointment> getGroomerAppointmentsByDate(int groomerId, Calendar date);

    List<Appointment> getGroomerAppointmentsByDate(int groomerId,
            Calendar date, int appId);

    List<Event> getGroomerEventsByDate(int groomerId, Calendar date);

    boolean isEmptyDate(int day, int month, int year, int groomerId);

我有一个实现接口的类。它有这种方法:

   @Override
        public boolean isEmptyDate(int day, int month, int year, int groomerId) {
            Calendar today = Calendar.getInstance();
            today.set(year, month, day, 0, 0, 0);
            today.set(Calendar.MILLISECOND, 0);

            Calendar tomorrow = Calendar.getInstance();
            tomorrow.set(year, month, day + 1, 0, 0, 0);
            tomorrow.set(Calendar.MILLISECOND, 0);

            String[] insertArgs = new String[] {
                    String.valueOf(today.getTimeInMillis()),
                    String.valueOf(tomorrow.getTimeInMillis()),
                    String.valueOf(groomerId) };
            Cursor cursor = database.rawQuery(
                    SQLiteConstants.COUNT_APPOINTMENTS_FOR_DATE, insertArgs);
            try {
                if (cursor.moveToFirst())
                    return cursor.getInt(0) > 0 ? false : true;
                return true;
            } finally {
                cursor.close();
            }
        }

我们可以看到该方法的签名与界面中的底部签名相同。但是,我的类有一个错误,说它没有实现接口的所有方法。我使用quickfix来使类从接口实现方法,它为类提供了这个方法:

@Override
    public boolean isEmptyDate(int day, int month, int year, long id) {
        return false;
    }

为什么Android Studio认为我的界面isEmptyDate方法采用id类型的long参数?

2 个答案:

答案 0 :(得分:2)

我想具有long id参数的方法来自IAppointmentDate接口。

答案 1 :(得分:-2)

似乎与方法有关。 1.用false初始化一个本地布尔变量。 2.将cursor.getInt(0)赋值给上面的变量。 3.最后返回此变量。 4.它应该解决你的问题