Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法为公共方法的子集生成Javadoc?例如,通过将公共方法注释为;不属于公共API的一部分”;_Java_Api_Javadoc_Doclet - Fatal编程技术网

有没有办法为公共方法的子集生成Javadoc?例如,通过将公共方法注释为;不属于公共API的一部分”;

有没有办法为公共方法的子集生成Javadoc?例如,通过将公共方法注释为;不属于公共API的一部分”;,java,api,javadoc,doclet,Java,Api,Javadoc,Doclet,我知道如何为类/接口/包的子集生成Javadoc。但是有没有一种方法可以只为公共方法的子集生成Javadoc 我更希望能够将方法(Javadoc标记或注释)标记为属于某个API或不属于该API的一部分。然后有一个只为指定方法集生成Javadoc的工具,这些方法构成了API 对于我的项目来说,在方法的公共/私有/包访问之间进行选择是不够的。公共方法可能属于或不属于公共API,也可能属于API 1,但不属于API 2。本质上,我希望能够从我的公共方法的任意子集中选择API。如果您使用的是javado

我知道如何为类/接口/包的子集生成Javadoc。但是有没有一种方法可以只为公共方法的子集生成Javadoc

我更希望能够将方法(Javadoc标记或注释)标记为属于某个API或不属于该API的一部分。然后有一个只为指定方法集生成Javadoc的工具,这些方法构成了API


对于我的项目来说,在方法的公共/私有/包访问之间进行选择是不够的。公共方法可能属于或不属于公共API,也可能属于API 1,但不属于API 2。本质上,我希望能够从我的公共方法的任意子集中选择API。

如果您使用的是
javadoc
命令行工具,您可以通过将公共方法标记为
已弃用
并使用
-nodeprecated
选项来排除它们。但是如果你想要更复杂的东西,你必须自己实现它

关于如何做到这一点的大致想法:

  • 创建自定义注释@API1、@API2等
  • 使用这些注释对方法进行分类(即标记它们)
  • 编写一个定制的Ant任务,该任务读取一个配置参数(例如,从一个文件中),该参数告诉您要为哪个API生成Javadoc
  • 仍然在Ant任务中,循环遍历带注释的方法,并用不推荐使用的注释替换所有不是所选API的API注释。这将从Javadoc中排除它们

  • 嗯,这真是太麻烦了。就像他们在评论中所说的,如果你有一个具有多个接口的类(对于不同的用户配置文件,我想),考虑写单独的接口。

    < P>如果你不绑定到JavaDoc,你可以尝试用:

    当您对方法进行适当分组时,还可以限制所需的
    @cond
    语句的数量


    创建文档时,可通过配置选项选择实际包含的方法。

    尚未找到解决方案。我对这个话题也很好奇+1或者,您可以通过单独的物理接口/类/包公开单独的概念API。java模块系统可能提供一些功能。一般来说,版本控制系统中的分支可能更符合您的要求。开发两个分支是一个PITA,但是代码在概念上更简单。但是,我必须使用Javadoc。谢谢你的意见。有趣。
    public class SomeClass {
        /// @cond API1
        /**
         * This method can be called as part of API1 only.
         */
        public void method() { ... }
        /// @endcond
    
        /// @cond (API1 || API2)
        /**
         * This method can be called as part of API1 or API2.
         */
        public void method2() { ... }
        /// @endcond
    }