Реализованные классы/подклассы в контенте помогают в eclipse
Что я пытаюсь сделать, так это:
List<String> list = new
а затем нажмите Ctrl + Space и получите ArrayList<String>()
(среди прочего), чтобы отобразиться в предложении типа.
Я думал, что у меня было это раньше, но мне недавно пришлось переустановить и не могу найти настройки для него.
Это Eclipse Java EE helios, но при необходимости я могу обновить до индиго.
Я попробовал посмотреть здесь для справки, но не нашел информацию, которую я искал. Я попытался проверить все поля в разделе "Типы предложений по умолчанию" (Java → Editor → Content Assist → Advanced) безрезультатно.
Ответы
Ответ 1
Eclipse не знает, какой класс реализует интерфейс, и не будет загружать их для всех интерфейсов, которые он имеет. НО, Eclipse может узнать то, что вы используете, и показать его вам при следующем использовании, возможно, что с вами случилось, со временем вы научили Eclipse реализованным классам!
Вот пример Eclipse перед обучением/и после изучения того, какие классы реализуют Map
.
![enter image description here]()
Как вы можете видеть на изображении, в первый раз Eclipse не знал ничего, кроме HashMap
, который я использовал раньше.
После этого я использовал TreeMap
и LinkedHashMap
, набрав их вручную (только первый раз) и Eclipse теперь кэшировал их.
Как предлагали ребята, вы можете поместить точку на Map
и нажать Ctrl+T
, чтобы все классы выполнили это. Будет полезно в первый раз.
ОБНОВЛЕНИЕ в 2014 году!
Как заметил К.Карпентер, эта функция отключена в новых версиях Eclipse. Чтобы снова включить его. Перейдите в окно- > Настройки- > Java- > Editor- > Content Assist- > Advanced.
В разделе "Типы предложений по умолчанию" вам нужно будет проверить предложения Java Type
Ответ 2
Код, подобный этому, является одним из моих любимых ненавистников Java Generics. Я использую библиотеки Google Guava, чтобы сделать мой код generics более удобочитаемым, а в качестве побочного эффекта не нужна эта особенность в Eclipse ( хотя я согласен, что он должен быть реализован). У Guava есть аналогичная поддержка наборов тоже.
Например, я обычно объявляю свой код следующим образом:
import com.google.common.collect.Lists;
...
List myList<String> = Lists.newArrayList();
Ответ 3
Я хотел бы видеть, что Eclipse делает это, но я думаю, что контентная поддержка никогда не работала без начального символа (если нет какой-то скрытой функции, которую мы не знаем).
Ну, имея это в виду, то, что я делаю, чтобы обойти "блокировку с помощью самых используемых реализаций", - это посмотреть на javadoc в разделе All Known Implementing Classes
, чтобы увидеть другие возможности, которые я мог бы использовать.
Я знаю, что это не решение in-Eclipse, но это может помочь некоторым пользователям, которые застряли в одной и той же проблеме.
Ответ 4
Не претендуя на то, чтобы быть ответом на ваш вопрос, но я использую Quick Fix (Ctrl + 1/Ctrl + 2), чтобы определить новую локальную переменную или поле.
Сначала я печатаю (возможно, используя Ctrl + Space для Content Assist):
new ArrayList<String>();
Затем я нажимаю Ctrl + 2 и L, который присваивает оператор новой локальной переменной, генерируя определение переменной с создаваемым типом:
ArrayList<String> arrayList = new ArrayList<String>();
Наконец, я использую вкладку (также можно использовать Enter), чтобы перемещаться между вставленными arrayList
и arrayList
, чтобы указать точное имя переменной и ее тип из раскрывающегося списка:
List<String> list = new ArrayList<String>();
Нажатие вкладки в третий раз перемещает курсор в конец инструкции.
Надеюсь, вы также найдете этот способ полезным.
Ответ 5
Здесь вы можете добавить новый шаблон для затмения, тогда все, что вам нужно сделать, это напечатать arraylist, нажать ctrl + space и создать для вас всю декларацию. Все, что вам нужно сделать, это добавить тип и имя.
Сохраните этот файл, затем импортируйте его в затмение
Вот как импортировать/экспортировать шаблон
-
Перейдите в окно > Настройки > Java > Редактоp > Шаблоны
-
Выберите нужные шаблоны. NB! Флажки не указывают
что выбрано; они используются для включения/выключения шаблона.
шаблон выбирается, если выбрана вся строка в таблице, поэтому
используйте Ctrl + левый клик или метод, специфичный для вашей ОС, для многократного выбора
шаблоны.
-
Нажмите "Импорт..." и выберите полученный XML файл. Или Экспорт... и
укажите имя файла.
Введите arrayList
![Type arraylist]()
Нажмите ctrl + space и выберите arraylist
![Press Ctrl + Space]()
Введите тип и имя
![Fill in the type and name]()
Ответ 6
Я могу это сделать, но он не отображается в предложении типа. Попробуйте ввести:
List<String> list = new Ar
Нажмите Ctrl-Space и просто примите первое предложение. Он заканчивается для ArrayList<String>()
для меня (это использует дистрибутив SpringSource Tool Suite Eclipse).