我听过一些人说,他们换了一种方式,并对其中一种方式发誓.

作为Eclipse的忠实粉丝,但我还没有时间try IntelliJ,我很有兴趣听到IntelliJ用户的意见,他们是"前Eclipse人",你可以用IntelliJ做一些你不能用Eclipse做的事情.

Note:这不是一个主观的问题,也不是要变成一场圣战.Please downvote any flamebait answers

推荐答案

按住Ctrl并单击可随时随地工作

按住Ctrl键并单击可将您带到定义所单击对象的位置-不仅在JAVA代码中的JAVA类和变量中,而且在Spring配置中(您可以单击类名、属性或Bean名称),在Hibernate 中(您可以单击属性名称或类或包含的资源),您可以在一次单击内从JAVA类导航到用作Spring或Hibernate Bean的位置;单击包含的JSP或JSTL标记也可以,按住ctrl键并单击JAVAScript变量或函数会将您带到定义它的位置,如果有多个位置,包括HTML或JSP文件中的其他.js文件和JS代码,则会显示一个菜单.

自动完成多种语言

Hibernate

HSQL表达式、Hibernate 配置(包括类、属性和DB列名)、Spring配置中的自动完成

<property name="propName" ref="<hit CTRL-SPACE>"

它将向您显示可以注入该属性的bean的列表.

JAVA

JAVA代码中非常智能的自动完成:

interface Person {
    String getName();
    String getAddress();
    int getAge();
}
//---
Person p;
String name = p.<CTRL-SHIFT-SPACE>

它只显示了getName()getAddress()toString()(只有它们在类型上是兼容的),getName()是列表中的第一个,因为它有更相关的名称.目前仍在EAP中的最新版本8具有更智能的自动完成功能.

interface Country{
}
interface Address {
    String getStreetAddress();
    String getZipCode();
    Country getCountry();
}
interface Person {
    String getName();
    Address getAddress();
    int getAge();
}
//--- 
Person p;
Country c = p.<CTRL-SHIFT-SPACE>

它会默默地自动完成

Country c = p.getAddress().getCountry();

JAVAscript

JAVAScript中的智能自动完成.

function Person(name,address) {
    this.getName = function() { return name };
    this.getAddress = function() { return address };
}

Person.prototype.hello = function() {
    return "I'm " + this.getName() + " from " + this.get<CTRL-SPACE>;
}

而且它只显示getName()getAddress(),不管项目中其他JS对象中的get*方法如何,按住ctrl并单击this.getName()会将您带到定义此方法的位置,即使您的项目中还有其他getName()个函数.

HTML

我有没有提到自动完成和在文件路径中按ctrl键,比如<;脚本src="",<;img src="")等?

Autocomplete in HTML tag attributes. Autocomplete in style attribute of HTML tags, both attribute names and values. Autocomplete in class attributes as well.
Type <div class="<CTRL-SPACE> and it will show you list of CSS classes defined in your project. Pick one, ctrl-click on it and you will be redirected to where it is defined.

轻松掌握自己的语言

最新版本有语言注入,所以您可以声明您的自定义JSTL标记通常包含JAVAScript,并且它将突出显示其中的JAVAScript.

<ui:obfuscateJAVAScript>function something(){...}</ui:obfuscateJAVAScript>

在所有项目中进行索引搜索.

您可以使用Find来查找任何JAVA类或方法的用法,它将找到使用它的地方,不仅包括JAVA类,还包括Hibernate 、Spring、JSP和其他地方.重命名方法重构不仅在JAVA类中重命名方法,而且在包括注释的任何地方重命名方法(无法确定注释中的字符串是否真的是方法名,所以它会询问).即使存在同名的另一个类的方法,它也只会找到你的方法.

改进的调试器

当我在debugger的watch窗口中查看HashMap时,我看到的是逻辑视图——键和值,上次我在Eclipse中这样做时,它显示的是带有散列和下一个字段的条目——我并不是真的调试HashMap,我只是想查看它的内容.

Spring & Hibernate configuration validation

当您编辑Spring和Hibernate 配置时,它会正确地验证它们,所以我不需要重新启动服务器就能知道我拼错了类名,或者添加了构造函数参数,所以我的Spring CFG是无效的.

上次try 时,我无法在Windows XP x64上运行Eclipse.

它会建议你person.nameperson.address. 按住Ctrl键并单击person.name,它将导航到Person个类的getName()个方法.

在那里键入Pattern.compile(""); put\\there,点击CTRL-SPACE并查看有关可以在正则表达式中放入什么内容的有用提示.你也可以在这里使用语言注入——定义你自己的方法来获取字符串参数,在IntelliLang选项对话框中声明你的参数是正则表达式——它也会让你自动完成.不用说,它强调了不正确的正则表达式.

其他功能

我不确定Eclipse中是否存在一些功能.但至少我们团队中使用Eclipse的每个成员,都会使用一些合并工具将本地更改与源代码管理(通常是WinMerge)中的更改合并.我从来都不需要它——融入 idea 对我来说就足够了.通过3次单击,我可以看到源代码管理中的文件版本列表,再单击3次,我可以比较以前的版本,或者以前的版本和当前版本,并可能合并.

它允许指定我需要WEB-INF\lib个文件夹内的所有.jar,而无需单独 Select 每个文件,因此当有人将新的.jar提交到该文件夹时,它会自动拾取它.

上面提到的可能是它功能的10%.我不使用Maven、Flex、Swing、EJB和其他很多东西,所以我说不出它对它们有什么帮助.但确实如此.

Java相关问答推荐

Spring bootstrap @ Asmat注释与@ Routed

将偶数元素移动到数组的前面,同时保持相对顺序

伪类focus-in不适用于PFA中的选项卡

JsonPath在多个线程中返回错误的值

如果一个子类没有构造函数,超类也没有构造函数,那么为什么我可以构造子类的实例呢?

根据对象和值的参数将映射<;T、值&>转换为列表<;T&>

确定Java中Math.Ranb()输出的上限

如何从JNI方法正确调用NSOpenPanel以在正确的线程上运行?

我可以在MacOS上使用什么Java函数来在适当的设备上以适当的音量播放适当的alert 声音?

无法播放音频:从资源加载库GStreamer-Lite失败

有谁能帮我修一下这个吗?使输出变得更加整洁

如果执行@BeForeEach#repository.save(),则测试中的UnitTest最终UUID会发生更改

视图被推出线性布局-Android

当使用不同的参数类型调用时,为什么围绕Objects.equals的类型安全包装不会失败?

如何在Struts2中使用操作类中的结果注释重定向到不同的命名空间

如何通过用户ID向用户发送私信

如果c不为null,Arrays.sort(T[]a,Comparator<;?super T>;c)是否会引发ClassCastException?

如何在Selenium上继续使用最新的WebDriver版本

[Guice/MissingImplementation]:未绑定任何实现

@此处不能应用可为null的批注