Реализованные классы / подклассы в content assist в eclipse

что я пытаюсь сделать, это:

List<String> list = new 

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

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

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

Я пыталась найти здесь за помощью, но не нашел информацию, которую я искал. Я пробовал проверка всех полей в разделе "Виды предложений по умолчанию" (Java -> Editor -> Content Assist -> Advanced " безрезультатно.

6 ответов


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

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

enter image description here

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

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

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

обновление в 2014 году!

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

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


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

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

import com.google.common.collect.Lists;
...
List myList<String> = Lists.newArrayList();

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

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

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


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

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

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

  • перейти в окно > настройки > Java > редактор > Шаблоны

  • выберите нужные шаблоны. НБ! Флажки не указывают что выбрали; они используются для включения/выключения шаблона. Ля шаблон выбирается, если выбрана вся строка в таблице, поэтому используйте Ctrl+Left Click или метод, специфичный для вашей ОС, чтобы выбрать несколько шаблоны.

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

введите arrayList

Type arraylist

нажмите ctrl + пробел и выберите arraylist

Press Ctrl + Space

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


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

во-первых, я печатаю (возможно, используя Ctrl+пробел для содержимого Assist):

new ArrayList<String>();

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

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

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

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

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

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


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

List<String> list = new Ar

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