Безопасно ли комментировать "@Override"? - PullRequest
0 голосов
/ 05 января 2012

Чтобы получить мой код для компиляции - который содержал следующее:

public class ContactsActivity extends ListActivity implements AdapterView.OnItemClickListener {

    Cursor mContacts;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Return all contacts, ordered by name
        String[] projection = new String[] { ContactsContract.Contacts._ID,
                ContactsContract.Contacts.DISPLAY_NAME };
        mContacts = managedQuery(ContactsContract.Contacts.CONTENT_URI,
                projection, null, null, ContactsContract.Contacts.DISPLAY_NAME);

        // Display all contacts in a ListView
        SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this,
                android.R.layout.simple_list_item_1, mContacts,
                new String[] { ContactsContract.Contacts.DISPLAY_NAME },
                new int[] { android.R.id.text1 });
        setListAdapter(mAdapter);
        // Listen for item selections
        getListView().setOnItemClickListener(this);
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
. . .

... Мне пришлось закомментировать «@Override» над обработчиком события onItemClick ().Это безопасно?Должен ли я просто пожать плечами и сказать: «Хорошо, это работает, я забуду об этом» или есть скрывающееся зло / скрытая проблема?

Ответы [ 6 ]

4 голосов
/ 05 января 2012

согласно моему предложению, не стоит удалять эту строку. вам нужно перейти на версию JDK в вашем затмении, тогда вы не получите таких ошибок. Выполните следующие шаги,

Щелкните правой кнопкой мыши по вашему проекту и выберите «Свойства».

Затем в левом разделе выберите «Компилятор Java» и выберите версию установленного JDK. Если он уже выбран, отмените выбор и попробуйте.

4 голосов
/ 05 января 2012

Если вам пришлось закомментировать @Override, то уровень соответствия JDK вашего компилятора не установлен на 1,6, как это должно быть для разработки Android. Если вы используете Eclipse, щелкните правой кнопкой мыши на имени проекта и выберите «Свойства». Затем выберите «Java Compiler» и настройте при необходимости. (Вероятно, вы унаследовали более низкий уровень соответствия JDK из рабочей области. При необходимости измените вместо этого уровень соответствия для рабочей области. Это избавит от необходимости исправлять ту же проблему с новыми проектами.)

Но чтобы ответить на ваш вопрос: комментировать безопасно ... 1004 *. Просто не так здорово использовать более низкий уровень соответствия.

3 голосов
/ 05 января 2012

У вас в java версии меньше 1.6.Исходя из этого, интерфейсы, а не только методы могут быть представлены как Override.Щелкните правой кнопкой мыши проект -> Свойства -> Компилятор Java -> Уровень соответствия компилятора до 1,6

2 голосов
/ 05 января 2012

Из документов Java :

@Override - аннотация @Override сообщает компилятору, что элемент предназначен для переопределения элемента, объявленного в суперклассе (основные методы будут обсуждаться в уроке под названием «Интерфейсы и наследование»).

   // mark method as a superclass method
   // that has been overridden
   @Override 
   int overriddenMethod() { }

Хотя эту аннотацию не требуется использовать при переопределении метода, она помогает предотвратить ошибки. Если метод помечен как @Override не может корректно переопределить метод в одном из его суперклассов, Компилятор генерирует ошибку.

1 голос
/ 05 января 2012

Это зависит.Если ваш компилятор настроен на целевую версию Java 5, а метод onCreate унаследован от интерфейса, тогда yes.Java 5 не поддерживает аннотацию переопределения для методов интерфейса, тогда как Java 6 ожидает этого.Само по себе это может указывать на то, что ваш JDK настроен неправильно, если вы ожидаете нацеливаться на Java 6, то, что вы можете получить, - это Java 5.

0 голосов
/ 05 января 2012

если бы вы прокомментировали это, вы не изменили бы методы. Так что вы на самом деле ничего не делаете. (Мое мнение)

...