在IntelliJ Idea中是否可以超链接注释?

23
我正在使用IntelliJ Idea进行Android开发。有没有办法在IDE中超链接两个注释。例如:

文件 a.java


文件 a.java

import a;

/**
* This class does something and something
* and does implements interface b, 
* (i want a hyperlink here, if pressed opens file b.java in IDE and cursor is at comments        
*  before method n)
*/

public class a {
  //do something
}

文件 b.java

import k;

public interface b {

   public j;
   public m;
   /**
    * This will be used when this and this will happen.
   */  
   public n;
}

为什么?如果一个类实现了一个接口,当你在接口实现声明上时,只需通过ctrl-b/cmd-b转到接口定义即可。您可以尝试使用普通的javadoc链接或sees,这将链接到渲染的javadocs中,不确定是否在ide中(您不需要它)。 - Dave Newton
3
@DaveNewton为什么?不是答案。你应该回答是或不是,并说明如何实现。 - Gaurav Agarwal
@DaveNewton 这只是为了方便导航,专注于重要内容。对于像我这样的人,在跟踪错误时非常有用。类似于 SO 上每个问题和答案上的“分享”按钮。 - Gaurav Agarwal
1
我想我不明白如果你已经在IDE中,为什么要从Javadocs中进行操作的重点; 开发人员应该习惯于使用代码工件导航而不是依赖文档,因为文档等待着出错。 - Dave Newton
1
@DaveNewton,你说的没错,但每个人都是不同的,对我来说,在IDE中使用基于超链接的导航将非常有帮助。 - Gaurav Agarwal
显示剩余2条评论
3个回答

23
你可以使用Javadoc的@see标签 - 示例如下here
应该足够像这样做:
/**
* Bla bla bla
* @see b#n
*/
public class a

3
这只会在Javadoc中创建链接,我想找到的是是否可能在IDE中连接两个文件。 - Gaurav Agarwal
8
@codingcrow,尝试一下,你可以按住“CTRL”键并单击进行导航,就像处理其他链接一样。同样,CTRL+B也可以使用。 - Vic
请注意--为了使点击穿透正常工作,see注释必须存在于自己单独的一行。如果您想在同一行中链接,请使用{@link Class#method},如madMuffin的答案所述。 - user3658800
工作..但必须是一个类/方法..所以对于任何JavaScript开发人员或其他方法导出等来说都很糟糕。 - undefined

18

目前的IntelliJ版本支持与Eclipse相同的@link注释标记。

要链接到另一个类/方法,只需使用以下模式:

/**
 * {@link Class#method}
 */
public void myMethod() {
}

你也可以省略方法,或者在括号中添加参数类型列表到方法中,这对于一个方法实现了不同的参数并且你想链接到特定的参数时非常有用。


9
这在行内注释(// 注释... )中无法正常工作。 - Yar
也许我们可以告诉谷歌。在评论中放链接不被支持是很烦人的。 - Dan Alboteanu
对于任何引用(其他类、函数、当前类、函数、接口、注释等),这对我都不起作用,有趣的是当我开始写@时,我会看到其他注释的列表,如@see@throws等,但没有@link:/ - ansh sachdeva
@anshsachdeva 我刚刚在我的 IntelliJ 2020.2 上确认过,它仍然能够正常工作。您确定您正在使用与我的示例相同的语法吗?(例如,长注释和链接注释周围的花括号?) - madmuffin
@madmuffin 谢谢您快速的回复。我实际上正在尝试为Android Studio中的一个kotlin文件编写文档。这两个词就像Java和Intellij的兄弟姐妹一样,所以我认为这应该可以工作。但是在kotlin中,我们可以使用[Classname/functionName/variable]语法来创建链接。 - ansh sachdeva

1
您可以使用方括号来表示这个格式:[class.method]。对于您的示例,它将如下所示:
/**
* This class does something and something
* and does implements interface [b.n]
*/

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