Extract interface
With the Extract Interface refactoring you have the following options:
- Create an interface based on the methods of a class.
- Rename the original class, and it implements the newly created interface. In such case, IntelliJ IDEA changes all usages of the original class to use the interface where possible.
In addition, static final fields, declared in the initial class, can be moved to an interface. As a result, an interface will be created containing the specific methods and fields. Thereby, the specified class methods become implementations of the corresponding interface methods.
Examples
Here we have a class, and perform Extract Interface refactoring to create an interface based on the methods of the class.
// File AClass.java class AClass < public static final double CONSTANT = 3.14; public void publicMethod() < >public void secretMethod() < >>
// File AClass.java class AClass implements AnInterface < public void publicMethod() < >public void secretMethod() < >// File AnInterface.java public interface AnInterface < double CONSTANT = 3.14; void publicMethod(); >>
Another example of the Extract Interface refactoring, when the Rename original class and use interface where possible option is selected.
public class FormerAClass implements AClass < public void publicMethod() < >public void secretMethod() < >>
public interface AClass < double CONSTANT=3.14; void publicMethod(); >
You can extract an interface from the class that already implements another interface. Let’s extract interface from the class that implements AnInterface . Depending on whether we want AnotherInterface (extracted interface) to extend the AnInterface (existing one) or we want source AClass to implement them both, we will get the following code:
Extracted Interface extends the existing one:
class AClass implements AnotherInterface < public void publicMethod() < //some code here >public void secretMethod() < //some code here >>
public interface AnotherInterface extends AnInterface < >
Source class implements both interfaces.
class AClass implements AnInterface, AnotherInterface < public void publicMethod() < //some code here >public void secretMethod() < //some code here >>
public interface AnotherInterface < >
Extract an interface
- Select a class in the Project view, Structure view, or place the caret anywhere within a class in the editor.
- On the main menu or from the context menu of the selection, choose Refactor | Extract | Interface . The Extract Interface dialog appears.
- To extract a new interface, select the Extract Interface option and specify the name for the new interface. To rename the original class and make it an implementation of the newly created interface, select the Rename original class and use interface where possible option and specify the new name for the original class. IntelliJ IDEA will alter all original class usages to the usages of the implementing only where it is still necessary.
- Specify the package, where the new interface will be located.
- Select the class members you want to be listed in the interface in the Members to form interface area. The list shows all the methods of the class, as well as final static fields (constants).
- In the JavaDoc area, select the action to be applied on the JavaDoc .
- To leave it where it is, select the As is option.
- To copy it to the extracted interface, select the Copy option.
- To move it to the extracted interface, select the Move option.
- Click Refactor to proceed.
- Click Refactor when ready. If IntelliJ IDEA shows you a Refactoring Preview in the Find tool window, review the suggested changes. To have the interface extracted and the proposed changes applied, click Do Refactor .
Как добавить Interface в пакет?
Установил новую версию IntelliJ Idea (Community Edition 2017.3.4×64). В предыдущей версии IntelliJ все было просто и понятно: New ⇒ Class ⇒ имя класса ⇒ Interface . А теперь что-то поменялось. Открывается New ⇒ File ⇒ Enter a file name ⇒ Ввожу имя файла – нет возможности выбрать опцию Interface. Столкнулся с неожиданной проблемой и не знаю что делать. Существует ли возможность еще как-то добавлять Interface в пакет, а не только на пакете Правая клавиша ⇒ New ?
Отслеживать
user328896
задан 30 янв 2018 в 21:42
1 3 3 бронзовых знака
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
New ⇒ Java Class ⇒ Вводим имя и выбираем тип класса. Выглядит это примерно так:
Версия: 2020.1.1
Как создать интерфейс в intellij idea
В прошлой теме мы рассмотрели, как создавать первую программу с последующим ее запуском в командной строке. Однако в реальности, как правило, крупные программы разрабатываются не при помощи простого текстового редактора, а с использованием таких средств как IDE или интегрированные среды разработки, которые упрощают и ускоряют написание кода и создание приложений. На данный момент одной из самых популярных сред разработки для Java является IntelliJ IDEA от компании JetBrains. Рассмотрим, как использовать данную среду.
Прежде всего загрузим установочный дистрибутив с официального сайта https://www.jetbrains.com/idea/download. По этому адресу можно найти пакеты для Windows, MacOS, Linux. Кроме того, сама среда доступна в двух версиях — Ultimate (платная с триальным бесплатным периодом) и Community (бесплатная). В данном случае выберем бесплатную версию Community .

Конечно, Community-версия не имеет ряда многих возможностей, которые доступны в Ultimate-версии (в частности, в Community недоступны опции для веб-приложений на Java). Но Community-версия тоже довольно функциональна и тоже позволяет делать довольно много, в том числе приложения на JavaFX и Android.
После установки запустим IntelliJ IDEA и создадим первый проект. Для этого на стартовом экране выберем New Project :

Далее откроется окно создания проекта. В левой части в качестве типа проекта выберем Java.

В поле Name укажем имя проекта. В моем случае проект будет называться HelloApp.
В поле Location можно указать путь к проекту, если не устраивает путь по умолчанию.
Поскольку мы будем работать с языком Java, в поле Language выберем пункт Java
Кроме того, в поле JDK можно указать путь к Java SDK, который будет использоваться в проекте. Как правило, это поле по умолчанию уже содержит путь к JDK, который установлен на локальном компьютере. Если это поле пусто, то его надо установить.
После этого нажмем на кнопку Create. После этого среда создаст и откроет проект.

В левой части мы можем увидеть структуру проекта. Все файлы с исходным кодом помещаются в папку src . По умолчанию эта папка пуста, никаких файлов кода у нас в проекте пока нет. Поэтому добавим файл с исходным кодом. Для этого нажмем на папку src правой кнопкой мыши и в контекстном меню выберем пункт New -> Java Class :

После этого нам откроется небольшое окошко, в которое надо ввести имя класса. Пусть класс будет называться Program :

После нажатия на клавишу Enter в папку src будет добавлен новый файл с классом java (в случае выше класс Program). А в центральной части откроется его содержимое — собственно исходный код:

Изменим код класса следующим образом:
public class Program < public static void main(String[] args) < System.out.println("Hello Java!"); >>
С помощью зеленой стрелки на панели инструментов или через меню Run -> Run. запустим проект.

И внизу IntelliJ IDEA отобразится окно вывода, где мы можем увидеть результат работы нашей программы.
Как начать пользоваться Swing GUI-визардом IntelliJ IDEA. Подробная инструкция
Давно не писал настольных приложений на Java вообще и с использовании Swing в частности. Однако, возникла необходимость немного по GUIть. В качестве инструмента выбрал IntelliJ IDEA Community edition, 2016.1 версии.
Взялся ваять и, естественно, первое, на что налетел — хотя со времён Borland Java Builder 2006 воды утекло немало, экранные интерфейсы создавать проще не стало, скорее наоборот. А одной из причин выбора IDEA было как раз наличие Swing дизайнера «из коробки», однако как им пользоваться с ходу решительно непонятно — форма генерится, класс создаётся, создаются переменные контролов из дизайнера… но и только: при создании нашего класса форма на экране не появляется
Пошарил интернет, информации приблизительно ноль. Народ говорит, мол, «создавай и — вперёд!». Хм…
По результатам небольших мытарств на эту тему решил опубликовать инструкцию, так как мне с учётом былого опыта было искать намного легче, чем новичку, который вообще в первый раз ваяет форму на Swing.
Создание Swing GUI форм средствами JetBrains IntelliJ IDEA 2016.1
Во-первых, для понимания процесса лучше начать с того. что зайти в меню IDEA «File -> Settings» — там «Editor -> GUI Designer» и установить флажок Generate GUI Into: в Java source code. (это немного поможет пониманию процесса на первом этапе — потом можно будет убрать обратно).

Далее открываем дерево исходного кода своего проекта и кликаем правой кнопкой мыши на любую папку или файл исходного кода java и выбираем «New -> Dialog» — вводим имя класса для формы.

В итоге нам действительно сгенерили класс-наследник JDialog (который можно создать и использовать) и форма к нему.
Запускаем наш проект на выполнение и… о ужасчудо! при компиляции IDEA добавляет в конец нашего файла некоторый дополнительный код.
< // GUI initializer generated by IntelliJ IDEA GUI Designer // >>> IMPORTANT!! /** * Method generated by IntelliJ IDEA GUI Designer * >>> IMPORTANT!! /** * @noinspection ALL */ public JComponent $$$getRootComponent$$$()
Несложно догадаться, что вся наша Swing-овая форма конфигурируется в автогенерируемом методе $$$setupUI$$$.
Вспомните настройку, которую мы установили в самом начале — «GUI Into: -> Java source code». Если её не ставить, то этот метод просто будет появляться напрямую в _class_ файле, минуя java-файл (декомпилируйте его, если сомневаетесь — я это сделал). Соответственно, можете вернуть настройку «GUI Into:» к первоначальному виду, чтобы этот код (который всё равно редактировать настоятельно не рекомендуют) не мозолил глаза.
Теперь, когда мы поняли, как оно работает, перейдём к созданию прочих форм — необязательно диалогов.
Опять правой кнопкой мыши кликаем на папку или файл исходного кода, выбираем «New -> GUI Form» — вводим имя класса для формы.
Генерится класс и форма к нему. Накидываем на форму несколько контролов. В GUI дизайнере смотрим имя корневого элемента (обычно panel1, если IDEA не задала имя, а такое бывает, задайте принудительно — я для наглядности назвал rootPanel).

Переходим к исходному коду нашего класса.
Итак:
1. Добавляем для нашего класса наследование «extends JFrame»;
2. Добавляем конструктор класса со строками:
setContentPane(panel1); setVisible(true);
Итоговый код класса
public class GUIFrame extends JFrame < private JButton button1; private JPanel rootPanel; public GUIFrame() < setContentPane(rootPanel); setVisible(true); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); >public static void main(String[] args) < new GUIFrame(); >>
Всё. Форма готова к употреблению. Остальное смотрите в многочисленных инструкциях по Swing.
P.S. Как вариант, можно не наследовать наш класс от JFrame, а создать конструктор вида:
JFrame frame = new JFrame(); frame.setContentPane(panel1); frame.setVisible(true);
Такой вариант тоже работает — возможно, кому-то пригодится.
