C#の#regionに相当するJava


489

Eclipseでコードの折りたたみにリージョンを使用したい。どのようにしてJavaでそれを行うことができますか?

C#での使用例:

#region name
//code
#endregion

@MichaelLaVoie:回答が削除されました。別のSEサイトに移動した可能性はありますか?
Adam Parkin 2014年


私はパーティーに遅く参加した。現在選択されている回答には他にも選択肢があることについて、IKashefに同意します。Yaqub Ahmadの答えは私の命を救った。Intellig IDEをダウンロードする必要はありませんでした。上記のCoffeeBytesプラグインをcking24343のコメントからダウンロードしました。「null n void」の構成を適用し、Lunaでうまく機能しました。構成を適用した後に再起動する必要があります
Maximus Decimus

3
始まりで //region [Description] 終わり//endregion
Amir Ziarati 2017年

回答:


216

そのよう同等の標準はありません。一部のIDE(たとえばIntellij、またはEclipse)は、関係するコードタイプ(コンストラクター、インポートなど)に応じて折りたたむことができますが、に似#regionたものはありません。


30
実際、これは達成できます。この記事を下にスクロールすると、「Yaqub Ahmad」がこの機能を取得する方法を説明しています。また、既存のEclipse環境に追加する方法を示すリンク(kosiara87.blogspot.com/2011/12/…)もここにあります。非常に便利です。
cking24343 2013年

14
承知しました。しかし、標準はありません。言語(またはテキスト)構成ではなく、IDEで実行されます
Brian Agnew

2
@lKashef-では、標準の同等のものは何ですか?下記のすべては特定のIDEに関連していますね。
Brian Agnew 2016年

4
@ BrianAgnew、OPは標準については何も言及していませんでした。代わりに、コードにリージョンのようなブロックを含めることができるようにしたいと考えています。たとえば、「#regionのようなものは何もない」とあなたは言った。IDEAでは、たとえば// region .. // endregionは#regionとまったく同じように機能します。IDE自体またはプラグインに依存するため、そもそもこれを行う標準的な方法はありません。Microsoftの背景を持つ開発者は、MS Visual Studioを常に「The」IDEと見なしますが、実際には、これはオプションの1つにすぎず、別のIDEがそのような機能を実装する場合と実装しない場合があります。
Mazen Elkashef 2016年

4
@BrianAgnew、私は他の人の答えがあなたの答えよりも役に立ったのを見るまで、ほとんど諦めました。ここに深刻な気持ちはありません。私たちは皆、知識を学び、共有するためにここにいます。そして、私があなたの答えに誤解を招いたという事実を述べています。おそらく2010年には良い答えでしたが、今日はそうではありませんでした。私の要点を理解してもらいたい。
Mazen Elkashef 2016年

476

Jet Brains IDEAにはこの機能があります。そのためにホットキーサラウンドを使用できます(Ctrl + Alt + T)。これは単なるIDEA機能です。

そこの地域は次のようになります。

//region Description

Some code

//endregion

3
それをありがとう!Android Studioで完全に動作します。
rogcg 2014

2
質問は明らかにEclipseのソリューションを要求します。
Duncan Jones、

5
@Duncan 1.選択肢があることを人々に示すのは間違いありません。2. Intellijの下で地域を検索して見つけました。
BHuelse

2
Linuxでは、そのホットキーはターミナルを実行します
user1209216

1
試してみたところ、IntelliJはネストされたリージョンもサポートしているようです!残念ながらこれは標準ではありません。
グルーバー2016

209

Android Studioでこれを試してください:

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

注意:// regionの後に空白行がない...

そしてあなたは得るでしょう:


Android StudioはIntelliJに基づいているため、すべての回答を検討し、計算しました。これはサポートする必要があります。それを指摘するのは良いことです!
セリーヌ

5
bummi、私は空白行と0.4.2でそれを試してみて、まだ動作しなかった
セリン

2
ただのコメント/アドバイス(そして決してあなたの質問に対する答えではありません)。リージョンはコーディングスタイルに取り組む代わりにクラスの複雑さを隠すことができるので、リージョンは避けるべきであるというのは広く知られています。各クラスが多くの機能を担当する巨大なクラスの代わりに、コードをより小さなクラスに分解することに取り組みます。時間の経過とともにコードを管理しやすくなります。詳しくはこちら:blog.codinghorror.com/the-problem-with-code-folding
Daniel Saidi

5
@DanielSaidiああ、ホラー!:)記事の男「何も表示されません。このクラスのコードを参照するには、これらのセクションを手動で展開する必要があります。」...キーを押すのが面倒なので、ファイル内のセクション)、機能は使用しないでください-これは非常に素晴らしい機能です。現在私はそれを1つずつ使用しています。非表示にしたメソッドは、作業中のクラスでスレッドセーフであることを確認しているため、整理しておくのに非常に役立ちます。私はそこにいたと思ったが、それは支払うべき小さな代償である...
ycomp

4
@DanielSaidi複雑さを隠すことではなく、変数宣言、ゲッター、初期化コードなどのありふれたコードを隠すことです。また、関数やクラスにある「複雑なコード」を折りたたむために#regionsを必要としないことにも注意してください。プログラマーが誤ってツールを使用しているということは、「ツールが悪い」ということにはなりません。
user1567453 2016

96

言語に相当するものはありません... 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で私を助けました。まさに私が達成したかったこと。私のコードをもっと使いやすく、整理してほしい。
インディゴ

この行を自動入力できるショートカットはありますか?
Pini Cheyni 2016年

1
@ pini-cheyni-ui.netbeans.org/docs/ui/code_folding/cf_uispec.htmlに は折りたたみに使用できるショートカットがあります...
Kevin LaBranche

@JadChahine:OPはEclipseについて質問しましたが、これがNetBeansでうまく機能することに同意します。構文は少し不器用ですが、コピーと貼り付けで十分に簡単です。
AlainD 2016

50

7
この情報に+1をありがとう。プラグインの開発者の元のWebサイトが2012年に利用できなくなったため、インストールと使用法についての短い説明が見つかりまし
k3b

誰かがintelliJの代替を見つけましたか?
philx_x 2017

ダウンロードリンクは存在しません。
derHugo

49

CoffeeScriptコード折りたたみプラグインを使用して、カスタムコード折りたたみ機能をEclipseに追加できます。

これは、Eclipse LunaとJunoで動作するようにテストされています。手順は次のとおりです

  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

    ここに画像の説明を入力してください

  6. 次のように新しいリージョンを作成します。

    ここに画像の説明を入力してください

  7. Eclipseを再起動します。

  8. 指定された開始および終了識別子が前に付いたコメントで折りたたみが機能するかどうか試してください

    ここに画像の説明を入力してください

    ここに画像の説明を入力してください

このブログでは、アーカイブをダウンロードして手順を見つけることもできます。


2
日食ネオンで私のために機能していません:コピーと貼り付けは何もしませんでした:変更された唯一のものは、マーケットプレイス>>インストールされたプラグイン>>更新でした。私は、CoffeeScriptのプラグインを更新したが、私はオプションエディタ>> javaの下「を選択し、使用に折りたたみ、」>>折りたたみ取得できませんでした
アンジェロOparah

Eclipse Oxygenで動作しましたが、Eclipseを再起動する必要があります。アイコンは、私には表示された私は、設定に変更して赤色のアイコンだったウィンドウ→優先→Javaのエディタ→→折りたたみでクリック高度なタブとにアイコンテーマ設定を変更する現代
Michieru

38

これは、言語機能というよりもIDE機能です。Netbeansでは、次の定義を使用して独自の折りたたみ定義定義できます。

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

記事で述べたように、これは他のエディターでもサポートされている可能性がありますが、保証はありません。


Androidスタジオでは、少なくとも、ブロックの一部を折り畳むことはできません。折りたたみ仕様がブロックの外側で始まり、ブロックの内側で終わる場合、アクティブ化されません。
Von Lemongargle教授、2014

30

Android Studio(またはIntelliJ IDEA)の最速の方法

  1. highlight the code あなたはそれを囲みたい
  2. ctrl+ alt+を押しますt
  3. c==>を押してから、説明を入力します
  4. 楽しい

//リージョン<名前>コード... // endregionの方が効率的でシンプルです!hehe; P
diegodsp 2017年

30

AndroidStudioリージョンリージョンを
作成

最初にSurround Withメニューの 検索(および必要に応じてショートカットを定義)ここに画像の説明を入力してください

次に、コードを選択し、押すCtrl+Alt+Semicolon->選択region..endregion...
ここに画像の説明を入力してください

地域に行く

まず、Custom Foldingショートカットを見つけます。
ここに画像の説明を入力してください 次に、コードのどこからでも、Ctrl+Alt+Period('>' on keyboard) ここに画像の説明を入力してください


20

ほとんどが投稿していることに反して、これはIDEのことではありません。言語的なことです。#regionはC#ステートメントです。


55
ほとんどが投稿しているのは、JAVAではこれがIDEの機能であることです。
WhyNotHugo 2011

1
そのような言語機能はないという2つの最も人気のある回答が表示されます。-1。
Mohayemin 2012

23
C#では、一部はIDE、一部は言語です。言語はプリプロセッサディレクティブをサポートしていますが、プリプロセッサはそれらを単に無視します(プロセッサがコメントを無視するのと同じ方法)。IDE(Visual Studio)はそれらを使用してコードの折りたたみを行います。
ADTC、2012

Javaは、IDE(Netbeans)のみがコードを折りたたむコードを指定していません。Netbeansには、 "TODO"などの特別なコメントがあります。これらは、SWプロジェクト開発プロセス
全体の

17

私はC#からJavaに来ていて、同じ問題があり、地域の最善かつ正確な代替手段は以下のようなものです(Android Studioで動作し、intelliJについて知らない):

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

ショートカットは以下のようです:

1-コードを選択

2- ctrl+ alt+を押すt

3-を押しcて説明を入力してください


AndroidStudioバージョン2.3.1では折りたたまれます。いつ折りたたまれたのかわかりません。
MiguelSlv

ありがとう。Android Studio 3.0ベータ2で完全に機能します。好奇心でEclipse Oxygenで試したところ、デフォルトでは機能しませんが、それ以上検索しませんでした。
Laurent

15

最良の方法

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

ヒント:「;」を入れます 「endregion」の終わり


1
日食はコードを折りたたみません、どのIDEを使用していますか?
Ohad Cohen

Android StudioおよびIntelliJ IDEAで動作します(どちらもJetBrainsによって同じコードベースから作成されています)
prashu132

IDEは「統合開発環境」の
略です

12

誰かが興味を持っている場合は、Eclipseですべてのメソッドなどを一度に折りたたむことができます。通常はブレークポイントを挿入するときに右クリックし、[折りたたみ]> [すべて折りたたむ]をクリックします。それは質問への答えではなく、迅速なコード折りたたみの代替手段を提供するだけであることを知っています。


1
また、ソースコードファイルを開くときに、Eclipseですべてを自動的に折りたたむこともできます。[設定]> [Java]> [エディター]> [折りたたみ]> [これらの要素を最初に折りたたむ](リストのすべてをチェック)。特に長いソースコードファイルでは、必要なものだけに集中するのが便利です。
ADTC、2012

@ADTC-ありがとうございます-ファイルを開くたびに何百回も手動で行ってきました-二度とない!!
ToolmakerSteve 2015年

あなたがコンピュータに手動で何の繰り返しを行うことができる場合@ToolmakerSteveは、ちょうどそこにあり、それを自動化する方法であることを。= D
ADTC 2015

8
#region

// code

#endregion

本当にIDEでのメリットはあります。Javaでは、IDEに標準が設定されていないため、実際にはに相当する標準はありません#region


3
まあに標準があればregion、Java IDE それサポートすることは間違いありませんよね?
Pacerier

@Pacerierがその標準をサポートしている場合、そうです。#regionは標準というよりIDEの機能だと思います。理論的には、Java IDEはこの動作を実装し、事実上の標準にすることができます
El Mac

4

ここに例があります:

//region regionName
//code
//endregion

100%はAndroid Studioで動作します


なぜあなたが反対票を投じられたのかはわかりませんが、これは実際にはAndroid Studioで機能し、設定は必要ありません。
maxdelia

2

コメント付きのコードには通常これが必要なので、開始と終了で中かっこを使用します。

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

コードスニペットに使用できますが、変数のスコープを変更するため、一部のコードで問題が発生する可能性があります。


1

実際、ヨハン#は、それがプリプロセッサディレクティブであることを示しています。つまり、基本的にIDEに何をすべきかを指示します。

#regionおよび#endregionコードを使用する場合、最終的なコードが存在するかどうかに関係なく、最終的なコードに違いはありません。それを使用しても何も変わらない場合、本当にそれを言語要素と呼ぶことができますか?

それとは別に、Javaにはプリプロセッサディレクティブがありません。つまり、コードフォールディングのオプションは、// <code-fold>ステートメントを使用して、NetBeansでIDEごとに定義されます。


1
それを使用しても何も変わらない場合、本当にそれを言語要素と呼ぶことができますか?-コメントはどうですか?
epeleg

2
私はそれが言語の機能ではないという議論を以前に聞いたことがあります。そして、この質問「それを使用しても何も変わらなければ、本当にそれを言語要素と呼ぶことができますか?」ばかげています。多くの時間のリファクタリングは、人間にとってコードを読みやすくし、コードの機能に影響を与えることは(うまくいけば)何もしません。
Menefee 2012年

1

MacおよびAndroid Studioでは、次の手順に従います。

  1. 折りたたむソースコードを強調表示します
  2. Alt+ Command+を押すt
  3. 選択する <editor-fold>

また、他のオプションを選択できます。

ここに画像の説明を入力してください


-1

Eclipseでは、ブラケットの折り返し可変領域ブロックを折りたたむことができます。最も近いのは次のようなことです:

public class counter_class 
{ 

    { // Region

        int variable = 0;

    }
}

8
これは役に立たない。メソッド内では機能せず、コードを壊します!(プライベート変数は最終的なものであると不満を言うでしょう。スコープが定義されていない変数は、内側の括弧の外にはアクセスできません!)
ADTC

1
私はこの方法が好きではなく、中括弧が多すぎます。これにより、コードが混乱する可能性があります:(
Broken_Window


-12

同じことを達成するためのいくつかのオプションがあります。以下の点に従ってください。

1)マクロエクスプローラーを開きます。

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)マクロにショートカットを割り当てましょう。[ツール]-> [オプション]-> [環境]-> [キーボード]に移動し、[次を含むコマンドを表示]テキストボックスでマクロを検索します(テキストボックスに「タイプ:マクロ」と入力すると、マクロ名が表示され、自分のマクロを選択します)。

7)[ショートカットキーを押す]の下のテキストボックスで、希望のショートカットを入力できます。Ctrl + M + Nを使用します。

使用する:

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

8)保存したショートカットキーを押します

以下の結果を参照してください。

ここに画像の説明を入力してください


マクロエクスプローラーはどこにありますか?Eclipse 4.3.1を使用していますが、見つかりません。
Mohamed El-Nakib 2013

1
これはJavaでもありませんか?
BurakKarakuş14年

@CJBS-re:This code seems to be for Visual Basic.NETIDEがであることを示唆しVisual Studioます。
ジェシーチザム2015

@JesseChisholm-それが私のポイントでした。OPはVBではなくJavaを必要としており、VSではなくEclipse IDEをターゲットにしています。
CJBS 2015

1
RIP回答。彼がビジュアルスタジオを使用している場合、彼はちょうど使用した可能性が#regionあります#endregion
PNDA
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.