一尘不染

在IntelliJ中可能无法在Eclipse中完成的事情?

java

我听说有人改变了选择的方式,并选择了其中一种。

作为Eclipse的忠实粉丝,但没有时间试用IntelliJ,我很想听听IntelliJ用户,他们是“前Eclipsians”,您可以使用IntelliJ来完成某些您无法使用Eclipse来完成的特定工作。

注意 :这不是主观问题,也不是要成为IDE的圣战。 请否决任何烈火的答案


阅读 273

收藏
2020-09-09

共1个答案

一尘不染

Ctrl单击可在任何地方使用

按住Ctrl键并单击即可将定义的对象带到任何地方-
不仅在Java类和Java代码中的变量中,而且在Spring配置中(您可以单击类名,属性或bean名称),在Hibernate中(您可以单击可以单击属性名称或类,或包含的资源),您可以一键单击Java类,将其用作Spring或Hibernate
bean;单击包含的JSP或JSTL标记也可以,按住ctrl键单击JavaScript变量或函数会将您带到定义的位置,或者如果存在多个位置,则显示菜单,包括HTML或JSP中的其他.js文件和JS代码文件。

自动完成许多语言

冬眠

在Spring配置中的HSQL表达式,Hibernate配置(包括类,属性和数据库列名称)中自动完成

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

它将显示您可以注入该属性的那些bean的列表。

爪哇

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();

Java脚本

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键单击文件的路径,例如<script src =“”,<img src =“”等?

HTML标记属性中的自动完成。HTML标签的样式属性的自动完成功能,包括属性名称和值。类属性也自动完成。
键入<div class =“ ,它将显示您在项目中定义的CSS类的列表。选择其中一个,然后按住Ctrl并单击,您将被重定向到定义它的位置。

轻松自学语言

最新版本具有语言注入功能,因此您可以声明自定义JSTL标记通常包含JavaScript,并将在其中突出显示JavaScript。

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

所有项目的索引搜索。

您可以使用任何Java类或方法的“查找用法”,它不仅可以找到Java类,还可以找到Hibernate,Spring,JSP和其他地方的使用位置。重命名方法重构不仅在Java类中而且在包括注释在内的任何地方都重命名方法(无法确定注释中的字符串是否真的是方法名称,因此它会询问)。即使存在另一个同名类的方法,它也只会找到您的方法。良好的源代码控制集成(SVN是否支持更改列表?IDEA支持每个源代码控制),能够使用更改创建补丁,以便您可以将更改发送给其他团队成员而无需提交更改。

改进的调试器

当我在调试器的监视窗口中查看 HashMap 时,我看到了逻辑视图-键和值,上次我在Eclipse中进行操作时,它显示的是带有哈希值和下一个字段的条目-
我不是在真正调试 HashMap ,我只想看看它的内容。

Spring&Hibernate配置验证

当您编辑它时,它会正确验证Spring和Hibernate配置,因此,我无需重新启动服务器即可知道我拼写了错误的类名或添加了构造函数参数,因此我的Spring
cfg无效。

上次尝试时,无法在Windows XP x64上运行Eclipse。

它会建议你 PERSON.NAMEperson.address 。按住Ctrl键单击“ person.name” ,它将导航您到
Person 类的 getName() 方法。 __

类型Pattern.compile("");把\\那里,按CTRL-SPACE,看什么,你可以把你的正则表达式有用的提示。您还可以在此处使用语言注入-
定义自己的使用字符串参数的方法,在IntelliLang选项对话框中声明您的参数为正则表达式-它将在该处也自动完成。不用说,它突出显示了不正确的正则表达式。

其他特性

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

它允许指定我需要WEB-INF\lib文件夹中的所有.jar,而无需分别选择每个文件,因此当有人将新.jar提交到该文件夹​​时,它将自动将其拾取。

上面提到的大概是其功能的10%。我没有使用Maven,Flex,Swing,EJB和许多其他东西,所以我无法确定它如何对他们有所帮助。但是确实如此。

2020-09-09