Java эквивалентно #region в C #

466

Я хочу использовать регионы для сворачивания кода в Eclipse; как это можно сделать на Java?

Пример использования в С#:

#region name
//code
#endregion
  • 0
    @MichaelLaVoie: ответ был удален. Есть ли шанс, что он был перенесен на другой сайт SE?
  • 1
    programmers.stackexchange.com/questions/53086/… кажется похожим по духу.
Показать ещё 2 комментария
Теги:
folding

20 ответов

197
Лучший ответ

Нет такого стандартного эквивалента. Некоторые IDE - Intellij, например, или Eclipse - могут складываться в зависимости от используемых типов кода (конструкторы, импорт и т.д.), Но нет ничего подобного #region.

  • 29
    На самом деле это может быть достигнуто. Если вы прокрутите вниз по этому сообщению, «Якуб Ахмад» объяснит, как получить эту функциональность. Также здесь есть ссылка ( kosiara87.blogspot.com/2011/12/… ), которая показывает, как добавить ее в существующую среду затмения ... чрезвычайно полезно!
  • 13
    Конечно. Но нет ничего стандартного . Это выполняется в IDE, а не имеет языковой (или текстовой) конструкции
Показать ещё 9 комментариев
448

У Jet Brains IDEA есть эта функция. Вы можете использовать горячие клавиши для этого (ctrl + alt + T). Это просто функция IDEA.

Регионы выглядят так:

//region Description

Some code

//endregion
  • 64
    работает в новой Android Studio! ты только что спас мой день :)
  • 3
    Спасибо за это! Отлично работает на Android Studio.
Показать ещё 6 комментариев
189

С Android Studio попробуйте следующее:

//region VARIABLES
private String _sMyVar1;
private String _sMyVar2;
//endregion

Осторожно: нет пустой строки после//региона...

И вы получите:

Изображение 1074

  • 0
    проходил через все ответы и понял, так как Android Studio основана на IntelliJ, то это должно быть поддержано. хорошая вещь, чтобы указать на это, хотя!
  • 5
    Бумми, я пробовал в 0.4.2 с пустой строкой и до сих пор работает
Показать ещё 6 комментариев
93

Нет эквивалента в языке... На основе IDE...

Например, в netbeans:

NetBeans/Creator поддерживает этот синтаксис:

// <editor-fold defaultstate="collapsed" desc="Your Fold Comment">
...
// </editor-fold>

http://forums.java.net/jive/thread.jspa?threadID=1311

  • 1
    Несмотря на то, что это сворачивание не зависит от языка, но все же помогло мне в NetBeans Именно то, что я хотел достичь. Просто хочу, чтобы мой код был более удобным и организованным для меня.
  • 8
    ха-ха с этим синтаксисом, я бы, вероятно, даже не использовал эту функцию
Показать ещё 3 комментария
50
49

Пользовательская функция свертывания кода может быть добавлена к затмению с помощью плагина сворачивания кода CoffeeScript.

Это проверено для работы с затмением Луны и Юноны. Вот шаги

  1. Загрузите плагин отсюда

  2. Извлечь содержимое архива

  3. Скопируйте и вставьте содержимое папки с плагинами и функциями в одноименную папку в каталоге установки eclipse
  4. Перезапустите затмение
  5. Перейдите в " Window >Preferences >Java >Editor >Folding >Select folding to use: Coffee Bytes Java >General tab >Tick checkboxes in front of User Defined Fold

    Изображение 1075

  6. Создайте новый регион, как показано:

    Изображение 1076

  7. Перезапустите Затмение.

  8. Попробуйте, если сворачивание работает с комментариями с указанием начального и конечного идентификаторов

    Изображение 1077

    Изображение 1078

Вы можете скачать архив и найти шаги в этом блоге.

  • 2
    не работает для меня на eclipse neon: копирование и вставка ничего не сделали: единственное, что изменилось, было в Marketplace >> Установленные плагины >> Обновление. Я обновил плагин coffeeScript, но у меня не было опции «Выбрать фальцовку для использования» в java >> editor >> fold
  • 0
    Он работал в Eclipse Oxygen, однако вам нужно снова запустить Eclipse. Значок, отображаемый для меня, был красным, поэтому я изменил конфигурацию: « Окно» → «Настройки» → «Java» → «Редактор» → « Свернуть », щелкните вкладку « Дополнительно » и измените тему значка на « Современный».
37

Это скорее функция IDE, чем функция языка. Netbeans позволяет определять свои собственные определения складчатости, используя следующее определение:

// <editor-fold defaultstate="collapsed" desc="user-description">
  ...any code...
// </editor-fold>

Как отмечено в этой статье, это может быть поддержано и другими редакторами, но нет никаких гарантий.

  • 2
    Это работает в Android Studio.
  • 0
    В Android-студии, по крайней мере, вы не можете сложить часть блока. Если спецификация сгиба начинается вне блока и заканчивается внутри блока, она не активируется.
Показать ещё 1 комментарий
29

самый быстрый способ в Android Studio (или IntelliJ IDEA)

  • highlight the code вы хотите окружить его
  • нажмите ctrl + alt + t
  • нажмите c == > , затем введите описание
  • пользоваться
  • 0
    // region <name> Ваш код ... // endregion Более эффективен и прост! хе-хе; P
25

AndroidStudio регион
Создать регион

Сначала найдите (и при необходимости определите короткий путь) меню Surround With Изображение 1079

Затем выберите код, нажмите Ctrl+Alt+Semicolon → выберите region..endregion...
Изображение 1080

Перейти в регион

Во-первых, найдите Custom Folding ярлык
Изображение 1081 Во-вторых, в любом месте вашего кода нажмите Ctrl+Alt+Period('>' on keyboard) Изображение 1082

19

Вопреки тому, что большинство из них публикует, это НЕ является средством IDE. Это язык. #region - это оператор С#.

  • 54
    Больше всего публикуется то, что в JAVA это особенность IDE.
  • 1
    Я вижу 2 самых популярных ответа о том, что такой языковой функции нет. -1.
Показать ещё 2 комментария
14

Лучший способ

//region DESCRIPTION_REGION
int x = 22;
// Comments
String s = "SomeString";
//endregion;

Совет: Положите ";" в конце "endregion"

  • 1
    eclipse не сворачивайте код, какую IDE вы используете?
  • 0
    Что это за IDE?
Показать ещё 3 комментария
12

Я перешел из С# в Java, и у меня была та же проблема, и лучшая и точная альтернатива для региона - что-то вроде ниже (работая в Android Studio, не знаю насчет intelliJ):

 //region [Description]
 int a;
 int b;
 int c;
//endregion

ярлык, как показано ниже:

1- выберите код

2- нажмите ctrl + alt + t

3- нажмите c и напишите свое описание

  • 0
    В AndroidStudio версии 2.3.1 он складывается. Я не знаю, когда это начало складываться.
  • 0
    Благодарю. Прекрасно работает в Android Studio 3.0 beta 2. По любопытству я попробовал в Eclipse Oxygen, по умолчанию он не работает, но поиск не ведется.
Показать ещё 1 комментарий
11

Если кому-то интересно, в Eclipse вы можете свернуть все свои методы и т.д. за один раз, просто щелкнув правой кнопкой мыши, когда вы обычно вставляете точку останова, нажмите "Складывание" > "Свернуть все". Он знает, что это не ответ на вопрос, а просто альтернатива быстрому сворачиванию кода.

  • 1
    Вы также можете использовать Eclipse для автоматического свертывания всего, когда открываете файл с исходным кодом. Preferences> Java> Editor> Folding> «Изначально сложить эти элементы» (отметьте все в списке). Я считаю удобным сосредоточиться только на том, что мне нужно, особенно в длинных файлах исходного кода.
  • 0
    @ADTC - Спасибо - так много сотен раз я делал это вручную каждый раз, когда открываю файл - никогда больше !!
Показать ещё 1 комментарий
6
#region

// code

#endregion

Действительно, вы получаете какую-либо пользу в среде IDE. В Java нет стандартного стандарта в среде IDE, поэтому на самом деле нет стандартной, параллельной #region.

  • 3
    Хорошо , если есть стандарт region , то мы можем быть уверены , что Java IDE будет поддерживать его, не так ли?
  • 0
    @Pacerier, если они поддерживают этот стандарт, да. Я думаю, что #region - это скорее функция IDE, чем стандарт. Теоретически Java IDE может реализовать это поведение и сделать его стандартом де-факто.
2

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

{
// Code
// Code
// Code
// Code
}

Он может использоваться для фрагментов кода, но может создавать проблемы в некотором коде, поскольку он изменяет область действия переменной.

1

На самом деле johann, # указывает, что это директива препроцессора, которая в основном означает, что она сообщает IDE, что делать.

В случае использования #region и #endregion в вашем коде это не имеет никакого значения в конечном коде, будь то там или нет. Вы действительно можете назвать его элементом языка, если его использование ничего не меняет?

Кроме того, java не имеет директив препроцессора, что означает, что опция сгибания кода определяется на основе per-ide, в netbeans, например, с помощью // < code-fold >

  • 1
    Вы действительно можете назвать это языковым элементом, если его использование ничего не меняет? - как насчет комментариев ?!
  • 2
    До этого я слышал аргумент, что это не функция языка. И этот вопрос "Можете ли вы назвать это языковым элементом, если его использование ничего не меняет?" смешно Рефакторинг много времени делает код более простым для чтения для людей и не делает ничего (надеюсь), чтобы повлиять на функцию кода.
0

В Mac и Android Studio выполните следующие действия:

  • Выделите исходный код для создания
  • Нажмите Alt + Command + t
  • Выберите <editor-fold>

Также вы можете выбрать другие параметры:

Изображение 1083

0

В Eclipse вы можете свернуть блок регистров переменной области скобок. Ближайшим является сделать что-то вроде этого:

public class counter_class 
{ 

    { // Region

        int variable = 0;

    }
}
  • 8
    Это бесполезно. Он не работает внутри метода, плюс он ломает код! (Закрытые переменные будут жаловаться, что хотят быть окончательными. Переменная без определения области действия не будет доступна вне внутренних скобок!)
  • 1
    Мне не нравится этот метод, добавляет слишком много фигурных скобок. Это может привести к запутанному коду :(
-3

Просто включите и включите плагин Coffee-Bytes (Eclipse)

  • 0
    Это не только упомянуто в предыдущем ответе , но вы даже не предоставили никакой полезной информации о нем.
-11

Существует некоторая возможность добиться того же, Следуйте приведенным ниже пунктам.

1) Откройте Macro explorer:

2) Создайте новый макрос:

3) Назовите его "OutlineRegions" (или все, что вы хотите)

4) Щелкните правой кнопкой мыши на "OutlineRegions" ( "Показать в проводнике макросов" ) выберите "Изменить" и вставьте в него следующий код VB:

    Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
Imports System.Diagnostics
Imports System.Collections

Public Module OutlineRegions

    Sub OutlineRegions()
        Dim selection As EnvDTE.TextSelection = DTE.ActiveDocument.Selection

        Const REGION_START As String = "//#region"
        Const REGION_END As String = "//#endregion"

        selection.SelectAll()
        Dim text As String = selection.Text
        selection.StartOfDocument(True)

        Dim startIndex As Integer
        Dim endIndex As Integer
        Dim lastIndex As Integer = 0
        Dim startRegions As Stack = New Stack()

        Do
            startIndex = text.IndexOf(REGION_START, lastIndex)
            endIndex = text.IndexOf(REGION_END, lastIndex)

            If startIndex = -1 AndAlso endIndex = -1 Then
                Exit Do
            End If

            If startIndex <> -1 AndAlso startIndex < endIndex Then
                startRegions.Push(startIndex)
                lastIndex = startIndex + 1
            Else
                ' Outline region ...
                selection.MoveToLineAndOffset(CalcLineNumber(text, CInt(startRegions.Pop())), 1)
                selection.MoveToLineAndOffset(CalcLineNumber(text, endIndex) + 1, 1, True)
                selection.OutlineSection()

                lastIndex = endIndex + 1
            End If
        Loop

        selection.StartOfDocument()
    End Sub

    Private Function CalcLineNumber(ByVal text As String, ByVal index As Integer)
        Dim lineNumber As Integer = 1
        Dim i As Integer = 0

        While i < index
            If text.Chars(i) = vbCr Then
                lineNumber += 1
                i += 1
            End If

            i += 1
        End While

        Return lineNumber
    End Function
End Module

5) Сохраните макрос и закройте редактор.

6) Теперь давайте присвойте ярлык макросу. Перейдите в Инструменты- > Параметры- > Среда- > Клавиатура и найдите свой макрос в командах show show, содержащих текстовое поле (Тип: Макро в текстовое поле, оно предложит имя макроса, выберите ваш.)

7) теперь в текстовом поле в разделе "Нажмите клавиши быстрого доступа" вы можете ввести желаемый ярлык. Я использую Ctrl + M + N.

Использование:

return
{
//Properties
//#region
Name:null,
Address:null
//#endregion
}

8) Нажмите сохраненную комбинацию клавиш

См. ниже результат:

Изображение 1084

  • 0
    Где находится Macro Explorer? Я использую Eclipse 4.3.1 и не могу его найти.
  • 1
    Это даже не Java?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню