ChatGPT解决这个技术问题 Extra ChatGPT

Java 相当于 C# 中的#region

我想在 Eclipse 中使用区域进行代码折叠;这怎么能在Java中完成?

C# 中的示例用法:

#region name
//code
#endregion
我迟到了。我同意 IKashef 的观点,即当前选择的答案还有其他选项。 Yaqub Ahmad 的回答救了我的命。我不需要下载 Intellig IDE。我从 cking24343 的评论中下载了提到的 CoffeeBytes 插件,我应用了“null n void”的配置,并且在 Luna 中运行良好。应用配置后需要重启
//region [Description] 开头并以 //endregion 结尾
后来,不是特别是 Java,而是与 Eclipse 折叠相关:stackoverflow.com/q/13505413/7224691

A
Alexander Bezrodniy

Jet Brains IDEA 具有此功能。您可以为此使用热键环绕(ctrl + alt + T)。这只是 IDEA 的功能。

那里的区域如下所示:

//region Description

Some code

//endregion

感谢那!在 Android Studio 上完美运行。
该问题显然要求为 Eclipse 提供解决方案。
@Duncan 1. 向人们展示有其他选择没有错。 2. 我google了一下Intellij下的地区,找到了。
在 Linux 上,该热键运行终端
刚试了一下,似乎 IntelliJ 也支持嵌套区域!太糟糕了,这不是标准的。
B
Brian Agnew

没有这样的 标准 等价物。一些 IDE - 例如 Intellij 或 Eclipse - 可以根据所涉及的代码类型(构造函数、导入等)折叠,但没有什么比 #region 更好。


其实这是可以实现的。如果您向下滚动这篇文章,“Yaqub Ahmad”将解释如何获得此功能。这里还有一个链接 (kosiara87.blogspot.com/2011/12/…),它向您展示了如何将它添加到您现有的 eclipse 环境中......非常有用!
当然。但是没有什么标准。它在 IDE 中执行,而不是具有语言(或文本)结构
@lKashef - 那么标准等价物是什么?下面提到的所有内容都与特定的 IDE 相关,不是吗?
@BrianAgnew,OP 没有提及任何有关标准的内容,而是希望能够在他的代码中包含类似区域的块。例如,您说“但没有什么比#region 更相似了”。例如在 IDEA 中 //region .. //endregion 的工作方式与 #region 完全一样。首先没有标准的方法可以做到这一点,因为它取决于 IDE 本身或插件。具有微软背景的开发人员总是将 MS Visual Studio 视为“最佳”IDE,但实际上它只是其中一个选项,另一个 IDE 可能会也可能不会实现此类功能。
@BrianAgnew,我几乎放弃了,直到我看到其他人的回答比你的回答更有帮助。在这里真的没有难过的感觉,我们都在这里学习和分享我们的知识,并说明我被你的回答误导了这一事实,也许它在 2010 年是一个很好的答案,但不是今天。我希望你明白我的意思。
b
bummi

使用 Android Studio,试试这个:

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

小心: //region ... 之后没有空行

你会得到:

https://i.stack.imgur.com/2MarZ.png


由于Android Studio基于IntelliJ,因此正在查看所有答案并认为必须支持这一点。指出这一点是件好事!
bummi,我确实在 0.4.2 中尝试过,但仍然可以使用空行
只是评论/建议(绝不是您问题的答案)。应该避免使用区域是一个普遍的观点,因为它们让你隐藏类的复杂性而不是处理你的编码风格。而不是每个类负责许多功能的大型类,而是将您的代码分解为更小的类。随着时间的推移,它将使您的代码更易于管理。在此处阅读更多信息:blog.codinghorror.com/the-problem-with-code-folding
@DanielSaidi 哦,太恐怖了! :) 文章中的那个人“我什么都看不到!我必须手动展开这些部分才能浏览此类中的任何代码。” ...所以因为他懒得按一个键(这会展开文件中的所有部分),所以不能使用该功能 - 这是一个非常棒的功能。现在我正在使用它一一隐藏我已经验证的方法在我正在工作的类中是线程安全的,它确实有助于保持井井有条。当然有时我想知道那是什么我以为在那里,但这是一个很小的代价......
@DanielSaidi 这不是隐藏复杂性,而是隐藏普通代码,例如变量声明、getter、初始化代码等。另请注意,您不需要#regions 来折叠函数和类中的“复杂代码”。程序员错误地使用工具并不等于“工具不好”。
K
Kevin LaBranche

语言中没有等价物...基于 IDE...

例如在 netbeans 中:

NetBeans/Creator 支持这种语法:

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

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


即使它不是特定于语言的折叠,但仍然在 NetBeans 中帮助了我。正是我想要达到的目标。只是希望我的代码对我来说更方便和更有条理。
是否有任何快捷方式可以自动填充此行?
@pini-cheyni - ui.netbeans.org/docs/ui/code_folding/cf_uispec.html 有可折叠的快捷方式....
@JadChahine:OP 询问了 Eclipse,但同意这对 NetBeans 很有效。语法有点笨拙,但复制粘贴让它变得很容易。
M
Michieru

可以使用 CoffeeScript 代码折叠插件将自定义代码折叠功能添加到 Eclipse。

经过测试,它可以与 eclipse Luna 和 Juno 一起使用。以下是步骤

从这里下载插件 提取存档的内容 将插件和功能文件夹的内容复制粘贴到 eclipse 安装目录中的同名文件夹 重新启动 eclipse 导航窗口 > 首选项 > Java > 编辑器 > 折叠 > 选择要使用的折叠:Coffee Bytes Java >General 选项卡 >勾选 User Defined Fold 前面的复选框 创建新区域,如图所示:重新启动 Eclipse。尝试折叠是否适用于带有指定开始和结束标识符前缀的注释

您也可以在此Blog 下载存档并查找步骤。


在 eclipse neon 上不适合我:复制和粘贴什么也没做:唯一改变的是市场 >> 安装的插件 >> 更新。我更新了coffeeScript插件,但在java>>编辑器>>折叠下我没有得到“选择折叠使用”选项
它在 Eclipse Oxygen 中工作,但是您需要再次重新启动 Eclipse。显示给我的图标是一个红色图标,所以我在配置中进行了更改,窗口→首选项→Java→编辑器→折叠单击高级选项卡并将图标主题设置为现代
C
Community

对于 Eclipse IDE,Coffee-Bytes plugin 可以做到,download link is here

编辑:

Latest information about Coffee-Bytes is here


+1 感谢您提供此信息。由于插件开发者的原始网站在 2012 年不再可用 - 我找到了 a short desctription for installation and usage
有人找到了 IntelliJ 替代品吗?
下载链接已不存在。
h
heavyd

这更像是 IDE 功能而不是语言功能。 Netbeans 允许您使用以下定义来define your own folding definitions

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

如文章中所述,其他编辑也可能支持这一点,但不能保证。


至少在 Android Studio 中,你不能折叠一个块的一部分。如果折叠规范从一个块之外开始,并在一个块内结束,它将不会激活。
y
ycomp

Android Studio(或 IntelliJ IDEA)中最快的方法

突出显示要包围它的代码按 ctrl + alt + t 按 c ==> 然后输入描述享受


// region 你的代码... // endregion 更高效更简单!呵呵;P
L
Linh

AndroidStudio 区域
创建区域

https://i.stack.imgur.com/zyRLd.png

https://i.stack.imgur.com/N1EJn.gif

前往地区

https://i.stack.imgur.com/JyATQ.png


J
Johann

与大多数人发布的相反,这不是 IDE 的事情。这是语言的事情。 #region 是一个 C# 语句。


大多数人发布的是在 JAVA 中这是一个 IDE 功能。
我确实看到 2 个最受欢迎的答案说没有这种语言功能。 -1。
在 C# 中,它部分是 IDE,部分是语言。该语言支持预处理器指令,但预处理器只是忽略它们(与处理器忽略注释的方式相同)。 IDE (Visual Studio) 使用它们来进行代码折叠。
Java 没有指定代码折叠只有 IDE (Netbeans) 有,Netbeans 有更多的特殊注释,如“TODO”等等。它们对于通过 SW 项目开发过程跟踪您的进度非常有用
A
Amir Ziarati

我从 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 版中,它会折叠。不知道什么时候开始折腾。
谢谢。在 Android Studio 3.0 beta 2 中完美运行。出于好奇,我在 Eclipse Oxygen 中尝试过,默认情况下它不起作用,但没有进一步搜索。
T
Taddeo

最好的方法

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

提示:输入“;”在“endregion”的末尾


eclipse不折叠代码,你用的是什么IDE?
它适用于 Android Studio 和 IntelliJ IDEA(两者都由 JetBrains 使用相同的代码库制作)
R
Ricky

如果有人有兴趣,在 Eclipse 中,您可以一次性折叠所有方法等,只需在通常插入断点时单击鼠标右键,单击“折叠”>“全部折叠”。它知道这不是问题的答案,而只是提供快速代码折叠的替代方案。


您还可以让 Eclipse 在打开源代码文件时自动折叠所有内容。 Preferences > Java > Editor > Folding > “Initially fold these elements”(勾选列表中的所有元素)。我发现只关注我需要的东西很方便,尤其是在长的源代码文件中。
@ADTC - 谢谢 - 每次打开文件时我都会手动完成数百次 - 再也不会!
@ToolmakerSteve 如果您可以在计算机上手动执行任何重复的操作,则必须有一种方法可以将其自动化。 =D
C
Coder123

这是一个例子:

//region regionName
//code
//endregion

100% 在 Android 工作室工作


我不知道您为什么被否决,这实际上在 Android Studio 中有效,无需任何配置!
J
Justin Niessner
#region

// code

#endregion

真的只会让您在 IDE 中受益。对于 Java,IDE 中没有固定标准,因此实际上没有与 #region 平行的标准


好吧,如果region 有一个标准,那么我们可以确定 java IDE 的 支持它,不是吗?
@Pacerier 如果他们支持该标准,是的。我认为#region 与其说是标准,不如说是 IDE 功能。理论上,Java IDE 可以实现这种行为并使其成为事实上的标准
Y
Yawar

我通常需要这个注释代码,所以我在开始和结束时使用大括号。

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

它可以用于代码片段,但可能会在某些代码中产生问题,因为它会更改变量的范围。


S
Solarcloud

代码

我将 vscode 用于 java,它的工作原理与 Visual Studio 几乎相同,除了您使用注释:

//#region name

//code

//#endregion

https://i.stack.imgur.com/kBpwp.png


G
George

认识custom folding regions ⌥⌘T

https://i.stack.imgur.com/azcIG.gif


r
rmrrm

实际上,johann,# 表示它是一个预处理器指令,这基本上意味着它告诉 IDE 要做什么。

在您的代码中使用 #region#endregion 的情况下,无论它是否存在,最终代码都没有区别。如果使用它没有任何改变,你真的可以称它为语言元素吗?

除此之外,java 没有预处理器指令,这意味着代码折叠的选项是基于每个 ide 定义的,例如在 netbeans 中使用 // 语句


如果使用它没有任何改变,你真的可以称它为语言元素吗? - 评论怎么样?!
我之前听说过它不是语言的功能。而这个问题“如果使用它没有任何改变,你真的可以称它为语言元素吗?”很荒谬。大量时间重构使代码更易于人类阅读,并且没有(希望)影响代码的功能。
V
Victor Ruiz.

在 Mac 和 Android Studio 上,请遵循以下顺序:

突出显示要折叠的源代码 按 Alt+Command+t 选择

您还可以选择其他选项:

https://i.stack.imgur.com/OQJo1.png


M
Madhav Balakrishnan Nair

在 Visual Studio Code 中,试试这个:

//region Variables
// Code you need
//endregion

j
j0k

在 Eclipse 中,您可以折叠包裹变量区域块的括号。最接近的是做这样的事情:

public class counter_class 
{ 

    { // Region

        int variable = 0;

    }
}

这是没用的。它在方法中不起作用,而且它会破坏代码! (私有变量会抱怨他们想要成为最终变量。没有范围定义的变量在内括号之外将无法访问!)
我不喜欢这种方法,添加了太多花括号。这可能会导致混乱的代码:(
a
acmoune

只需安装并启用 Coffee-Bytes 插件(Eclipse)


an earlier answer 中不仅提到了这一点,而且您甚至没有提供任何有用的信息。
A
Abhishek

有一些选项可以实现相同的效果,请遵循以下几点。

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) 按保存的快捷键

见以下结果:

https://i.stack.imgur.com/c8gtK.png


宏资源管理器在哪里?我正在使用 Eclipse 4.3.1 并且找不到它。
这甚至不是Java?
@CJBS - 回复:This code seems to be for Visual Basic.NET 这表明 IDE 是 Visual Studio
@JesseChisholm - 这就是我的观点。 OP 想要 Java,而不是 VB,并且目标是 Eclipse IDE,而不是 VS。
RIP 回答。如果他使用的是 Visual Studio,他可以只使用 #region#endregion