Реализованные классы / подклассы в содержании помогают в затмении - PullRequest
18 голосов
/ 18 октября 2011

Я пытаюсь сделать следующее:

List<String> list = new 

, а затем нажмите Ctrl + Пробел и получите ArrayList<String>() (среди прочих), которое будет отображаться в предложении типа.

Раньше я думал, что у меня это работает, но недавно мне пришлось переустанавливать и не могу найти настройки для него.

Это Eclipse Java EE helios, но я могу перейти на индиго в случае необходимости.

Я пытался искать здесь за помощью, но не нашел информацию, которую искал. Я попытался установить все флажки в разделе «Типы предложений по умолчанию» (Java -> Редактор -> Помощник по содержимому -> Дополнительно).

Ответы [ 6 ]

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

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

Вот пример Eclipse до изучения / и после изучения того, что классы реализуют Map.

enter image description here

Как вы можете видеть на изображении, Eclipse в первый раз не знал ничего, кроме HashMap, которое я использовал ранее.

После этого я использовал TreeMap и LinkedHashMap, печатая их вручную (только в первый раз), и теперь Eclipse кэшировал их.

Как предложили ребята, вы можете поставить точку на Map и щелкнуть Ctrl+T, чтобы все классы реализовали это. Будет полезно с первого раза.

ОБНОВЛЕНИЕ в 2014 году!

Как заметил @ K.Carpenter, эта функция отключена в новых версиях Eclipse. Чтобы снова включить его. Перейдите в Окно-> Настройки-> Java-> Редактор-> Помощник по содержимому-> Дополнительно.

Под Виды предложений по умолчанию , вам нужно будет проверить Предложения типа Java

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

Код, подобный этому, - одна из моих любимых ненавистей к Java Generics.Я использую библиотеки Guava от Google, чтобы сделать мой универсальный код более читабельным, и в качестве побочного эффекта эта особенность в Eclipse не нужна (хотя я согласен, что она должна быть реализована).Guava имеет аналогичную поддержку для наборов тоже.

Например, я обычно объявляю свой код следующим образом:

import com.google.common.collect.Lists;
...
List myList<String> = Lists.newArrayList();
1 голос
/ 04 января 2012

Вот способ, которым вы можете добавить новый шаблон в eclipse, тогда все, что вам нужно сделать, это набрать arraylist, нажать ctrl + space, и он создаст для вас всю декларацию. Все, что вам нужно сделать, это добавить тип и имя.

Сохраните этот файл, затем импортируйте его в затмение

Вот как можно импортировать / экспортировать шаблон

  • Перейдите в Окно> Настройки> Java> Редактор> Шаблоны

  • Выберите шаблоны, которые вы хотите. NB! Флажки не указывают что выбрано; они используются для включения / выключения шаблона. шаблон выбирается, если выбрана вся строка в таблице, поэтому используйте Ctrl + щелчок левой кнопкой мыши или метод, специфичный для вашей ОС, для множественного выбора шаблоны.

  • Нажмите Импорт… и выберите полученный XML-файл. Или экспортировать ... и укажите имя файла.

Тип arrayList Type arraylist

Нажмите Ctrl + Пробел и выберите Arraylist

Press Ctrl + Space

Введите тип и имя Fill in the type and name

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

Не претендую на ответ на ваш вопрос, но я использую Quick Fix ( Ctrl + 1 / Ctrl + 2 ) определить новую локальную переменную или поле.

Сначала я набираю (возможно, используя Ctrl + Пробел для Content Assist):

new ArrayList<String>();

Затем я нажимаю Ctrl + 2 и L , которые присваивают оператор новой локальной переменной, генерируя определение переменной с типом, для которого создается экземпляр:

ArrayList<String> arrayList = new ArrayList<String>();

Наконец, я использую вкладку (можно также использовать Enter) для перемещения между вставленными arrayList и ArrayList, чтобы указать точное имя переменной и ее тип из раскрывающегося списка:

List<String> list = new ArrayList<String>();

Нажатие клавиши tab в третий раз перемещает курсор в конец оператора.

Надеюсь, вы тоже найдете этот способ полезным.

1 голос
/ 29 декабря 2011

Я бы хотел, чтобы Eclipse делал это, но я думаю, что помощник по контенту никогда не работал без начального символа (если нет какой-то скрытой функции, которую мы не знаем).

Ну, имея это вНе забывайте, что для обхода проблемы с 'блокировкой наиболее часто используемых реализаций' я должен посмотреть на javadoc в разделе All Known Implementing Classes, чтобы увидеть другие возможности, которые я мог бы использовать.

Я знаю, что это не решение в Eclipse, но ономожет помочь некоторым пользователям, которые застряли в той же проблеме.

0 голосов
/ 18 октября 2011

Я могу сделать это, но это не отображается в предложении типа. Попробуйте набрать:

List<String> list = new Ar

Нажмите Ctrl-Space и просто примите первое предложение. Для меня это значение равно ArrayList<String>() (используется дистрибутив SpringSource Tool Suite Eclipse).

...