在一个既有IntelliJ开发者又有Eclipse开发者的项目中使用@NotNull

17

一位在IntelliJ IDEA上工作(另一个项目)的同事向我展示了令人惊叹的@NotNull注释。 我在这里读过有关如何开始随处添加@NotNull可以节省大量时间和麻烦的消息(甚至IntelliJ 10在检测到 null 会带来严重后果时,还可以自动将@NotNull添加到旧代码中)。

自从我第一次读到我的第一条“Probable @NotNull violation”消息(实时在IDE中,甚至在不完整的 .java 文件中,该文件尚未编译)之后,我的下巴就掉了下来,我已经深深着迷了。

因此,我想知道:如果我们想在使用Eclipse和IntelliJ的开发人员的项目中开始使用@NotNull,是否需要了解任何内容?

我知道IntelliJ附带了annotations.jar。 这是否与Eclipse兼容?


@duffymo: 我知道,我知道...但我仍然想知道如何同时使用Eclipse和IntelliJ并仍然使用@NotNull。从某种意义上说,如果Eclipse不能实时警告@NotNull可能的违规行为,只要使用Eclipse的开发人员仍然可以在其项目中使用注释,那么这不是问题。如果有任何具有此方面经验的人可以发表评论,那将是很好的 :) 但是,是的... IntelliJ非常棒 :) - Gugussee
4
看到其他人使用Eclipse开发的代码在IntelliJ中运行时充斥着警告信息,这是非常令人沮丧的。 - sblundy
5个回答

6

还有一种可能性是将注释存储在源代码之外。设置 > 代码样式 > 代码生成 > 使用外部注释。然后,注释将存储在annotations.xml文件中,而不是存储在源代码中。这样,Eclipse用户就永远不必看到注释了。可以配置annotations.xml的位置,并且最好将该文件与项目一起存储在版本控制中。

请参见。

http://www.jetbrains.com/idea/webhelp/using-external-annotations.html http://blogs.jetbrains.com/idea/2008/02/external-annotations/


我记得至少一年前读过这个,但从未尝试过。你知道它是否与像Mercurial这样的版本控制系统和数据版本控制系统混合使用效果好吗?我有点担心,因为我经常需要跳转到另一个分支,回滚,应用“daggy fixes”等操作。 - Gugussee

4

你可以在Eclipse中使用annotations.jar,但是你可能不会得到任何好处...请参考这篇SO帖子


2
你可以使用FindBugs的@NonNull以及相关的IDE插件来支持两个IDE。

1

Findbugs有类似的功能,但是它的集成与IntelliJ内置的强大功能相比则显得相形见绌。


1
我想问为什么一个团队不使用通用的IDE。为什么不标准化选择其中一个?(你知道我会推荐你选择哪一个。)

11
因为它很可能最终会变成Eclipse,而没有任何IntelliJ用户想要这样。 - sblundy
5
我实际上见过一家公司,他们希望Java项目的开发环境和最终产品都是完全可移植的。他们的理由是,如果一些开发人员可以在Windows/Eclipse上工作,其他人可以在Linux/Eclipse上工作,其他人可以在Mac/IntelliJ上工作,等等,并且部署在例如Linux(例如本地)和Solaris(例如在预生产和生产中),那么这意味着该项目更有可能被良好设计/架构/设置等。我认为这很有道理。 - Gugussee
我可以告诉你,从Mercurial / IntelliJ转到CVS / Eclipse环境工作真的很令人沮丧:( 话虽如此,一些开发人员确实反叛了,并建立了自己的VCS服务器,没有告诉任何人(不要重复;),只偶尔提交到CVS。 - Gugussee
1
对我来说,SVN/IntelliJ是首选。我长期使用Eclipse,并感激在雇主不愿意为工具花费资金时有这么好的东西可用。但自从五年前第一次接触IntelliJ以来,我就再也没有回去过。它就是最好的选择。 - duffymo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接