黑马程序员——其他1:帮助文档的创建

------- android培训java培训、期待与您交流! ----------

上一篇我们自己创建了一个数组工具类,可以对数组进行各种操作。那么既然是工具类,就不仅要服务于我们自己,还应该可以帮助他人实现功能,这才是工具类的意义所在。当我们把由源代码编译得来的工具类字节码文件(“.class”)文件发给别人用的时候,这个类里面都有什么方法,如何调用这些方法是无法通过该文件看出来的(实际上,即使将字节码文件打开,也都是乱码),这时候就需要帮助文档了(也称为API文档,是Application Program Interface的缩写,应用程序接口)。

在讲如何创建帮助文档之前,我们先说一说另外一个大家容易犯错的地方。当我们从网上获取到了别人定义好的工具类字节码文件(以上篇ArrayTools类为例)后,将其保存到某个路径下,例如“d:\myclass”路径下,然后通过下面的代码调用其中的方法,

代码1:

class ArrayToolsDemo
{
<span style="white-space:pre">	</span>public static void main(String[] args)
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>int[] arr = {45, 12, 56, 71, 34, 90, 22, 4};
             
<span style="white-space:pre">		</span>int max = ArrayTools.getMax(arr);
<span style="white-space:pre">		</span>System.out.println("max = "+max);
<span style="white-space:pre">	</span>}
}
运行结果为:

max = 90

其中我们需要注意的是,如果ArrayTools类和ArrayToolsDemo不在同一个文件夹下时,应先设置classpath,命令行命令为“setclasspath=.;d\myclass”。细心的朋友可能会注意到,在路径前有一个“.”,表示当前目录,如果把“.”去掉,那么虚拟机只会在指定目录寻找需要的类字节码文件,而在“d:\myclass”路径下却并没有ArrayToolsDemo字节码文件,就会报错。

通过上述设置并能够正常使用工具类以后,我们聊聊帮助文档的创建。就像我们在前面说的一样, 帮助文档就像是一个程序的说明书,里面会有这个类的各种信息,比如,类中都有哪些对外提供的方法,包括方法名、返回值类型、以及对这个方法功能的简单描述,甚至可能会有调用这个方法的具体代码。我们还是以ArrayTools类为例。

代码2:

public class ArrayTools
{
<span style="white-space:pre">	</span>/**
<span style="white-space:pre">		</span>这是一个可以对整型数组进行操作的工具类
<span style="white-space:pre">		</span>该类中提供了获取最值、排序、打印数组等方法。
 
<span style="white-space:pre">		</span>@author Akx
<span style="white-space:pre">		</span>@version v1.0
<span style="white-space:pre">	</span>*/
<span style="white-space:pre">	</span>
<span style="white-space:pre">	</span>/**
<span style="white-space:pre">		</span>空参数构造函数
<span style="white-space:pre">	</span>*/
<span style="white-space:pre">	</span>private ArrayTools(){}
 
<span style="white-space:pre">	</span>//最大值
<span style="white-space:pre">	</span>/**
<span style="white-space:pre">		</span>获取一个整型数组中的最大值
<span style="white-space:pre">		</span>@param arr 接收一个整型数组
<span style="white-space:pre">		</span>@return 返回该数组中的最大值。
<span style="white-space:pre">	</span>*/
<span style="white-space:pre">	</span>public static int getMax(int[] arr)
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>int max = arr[0];
<span style="white-space:pre">		</span>for(int x=1; x<arr.length; x++)
<span style="white-space:pre">		</span>{
<span style="white-space:pre">			</span>if(max< arr[x])
<span style="white-space:pre">			</span>max = arr[x];
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>return max;
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>//最小值
<span style="white-space:pre">	</span>/**
<span style="white-space:pre">		</span>获取一个整型数组中的最小值
<span style="white-space:pre">		</span>@param arr 接收一个整型数组
<span style="white-space:pre">		</span>@return 返回该数组中的最小值。
<span style="white-space:pre">	</span>*/
<span style="white-space:pre">	</span>public static int getMin(int[] arr)
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>int min = arr[0];
<span style="white-space:pre">		</span>for(int x=1; x<arr.length; x++)
<span style="white-space:pre">		</span>{
<span style="white-space:pre">			</span>if(min> arr[x])
<span style="white-space:pre">				</span>min = arr[x];
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>return min;
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>/**
<span style="white-space:pre">		</span>给整型数组进行选择排序
<span style="white-space:pre">		</span>@param arr 接收一个整型数组
<span style="white-space:pre">	</span>*/
<span style="white-space:pre">	</span>//选择排序
<span style="white-space:pre">	</span>public static void selectSort(int[] arr)
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>for(int x=0; x<arr.length-1; x++)
<span style="white-space:pre">		</span>{
<span style="white-space:pre">			</span>for(int y=x+1; y<arr.length; y++)
<span style="white-space:pre">			</span>{
<span style="white-space:pre">				</span>if(arr[x]> arr[y])
<span style="white-space:pre">					</span>swap(arr,x, y);
<span style="white-space:pre">			</span>}
<span style="white-space:pre">		</span>}
<span style="white-space:pre">	</span>}<span style="white-space:pre">	</span>
<span style="white-space:pre">	</span>//交换两元素的位置
<span style="white-space:pre">	</span>//交换两元素的位置
<span style="white-space:pre">	</span>/**
<span style="white-space:pre">		</span>交换数组中两个元素的位置
<span style="white-space:pre">		</span>@param arr 接收一个整型数组
<span style="white-space:pre">		</span>@param x 需要交换位置的元素
<span style="white-space:pre">		</span>@param y 需要交换位置的另一个元素
<span style="white-space:pre">	</span>*/
<span style="white-space:pre">	</span>private static void swap(int[] arr, int x, int y)
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>arr[x] = arr[x] ^ arr[y];
<span style="white-space:pre">		</span>arr[y] = arr[x] ^ arr[y];
<span style="white-space:pre">		</span>arr[x] = arr[x] ^ arr[y];
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>//打印数组
<span style="white-space:pre">	</span>/**
<span style="white-space:pre">		</span>打印数组中的元素。打印形式:[element1, element2, element3, ...]
<span style="white-space:pre">		</span>@param arr 接收整型数组
<span style="white-space:pre">	</span>*/
<span style="white-space:pre">	</span>public static void printArray(int[] arr)
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>System.out.print("[");
<span style="white-space:pre">		</span>for(int x=0; x<arr.length; x++)
<span style="white-space:pre">		</span>{
<span style="white-space:pre">			</span>if(x!= arr.length-1)
<span style="white-space:pre">				</span>System.out.print(arr[x]+",");
<span style="white-space:pre">			</span>else
<span style="white-space:pre">				</span>System.out.println(arr[x]+"]");
<span style="white-space:pre">		</span>}
<span style="white-space:pre">	</span>}
}
“/** 内容 */”是专门为了生成帮助文档而定义的注释符,通常,其中的内容主要是关于这个类的描述信息。

类描述格式:

/**

类描述

             

@author 作者名

@version 版本号

*/

方法描述格式如下:

/**

方法描述

@param 参数名 参数描述

@return 返回值描述

*/

@author、@version、@param和@return是可以被帮助文档生成工具识别的标签,分别代表类的作者、类的版本号、参数和返回值。可能有的朋友会说,我们可以直接使用新版本,没有必要标明版本号。之所以标明版本号是因为,新版本可能会有一些bug,导致无法正常使用,在这种情况下,我们应该先提供旧版使用户能够正常使用,然后修改bug,再提供最新版,此时就应表明版本号,让用户知道这是老的版本。@param和@return分别表示调用方法时需要传入的参数名和返回值的含义。

至此,工具类的注释文档就定义完毕了,下面开始创建帮助文档。这里我们要用到除了javac和java以外的第三个工具——javadoc。命令行命令为:“javadoc–d myhelp –author –version ArrayTools.java”,其中,“-d”表示要将帮助文档生在到指定目录;myhelp为目录名(自定义);-author和-version分别显示作者和版本号;最终加上需要创建帮助文档的类文件。注意,如果要想为一个类创建帮助文档,必须将这个类定义为“public”。指定目录下没有“myhelp”文件夹,就会自动创建一个同名文件夹。

创建完毕以后,就会在指定目录下的“myhelp”文件夹下看到很多网页文件。打开名为“index”的文件,就可以查看类及其方法的所有信息了。大家会发现,在方法摘要中没有swap方法,这是因为该方法是私有方法,在生成帮助文档就会略过。只有方法的访问权限被定义为public何protected才能够生成帮助文档。关于protected访问权限后面的博客中会涉及到。如果想要将构造函数也显示在帮助文档中,就需要将构造方法的访问权限定义为public。

 

小知识点1:

       构造方法的权限和所在类的权限是一致的。如果类的访问权限是public,那么默认的构造方法也是public访问权限;相反,如果类的访问权限不是public,那么构造方法的访问权限也就不是public了。总之一句话,构造方法的访问权限是随着类的变化而变化的。

      

当然,Java也为我们提供了一个帮助文档,其中包含Java中所有包中的类及其方法的信息,方便程序使用。


Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值