4.8 类路径
设置共享类、Jar
将类放值目录/…/testLibs/,注意类的包路径需要和文件路径一致(包树状结构)
将Jar(achieve.jar)放至目录/…/testAchieves/
设置类路径,其中对class目录需要写目录名,对jar文件需要带上jar文件名,因为jar文件本质是class的归档,以ZIP的形式组织文件和子目录.例如:
/.../testLibs/;/.../testAchieves/achieve.jar;.
UNIX 系统中使用:分隔,WINDOWS系统中使用;分隔
对上述例子,如果虚拟机需要寻找类com.test.www.Test.class 会先去JAVA_HOME目录下的lib也就是jre/lib
和jre/lib/ext
目录下(这两个路径会被自动的搜索)寻找有没有对应的class,显然没有.
然后去类路径里面寻找
- /…/testLibs/com/test/www/Test.class
- /project/path/com/test/www/Test.class 当前目录
- /…/testAchieves/achieve.jar 中的 /com/test/www/Test.class
就是classpath + 包路径 + 类文件名
在使用关键字import
时,如果导入了*所有类,那么再引用一个未声明的类时,编译器会搜索包下所有的类,有且仅有一个符合时,才通过编译.
例如:
|
|
假如该文件引用了Test类,那么编译器会尝试寻找java.lang.Test和java.util.Test
另外,编译器在编译时,找到class文件之后,还会判断java文件(Source file)是否比类文件新,就是判断coder是否进行了更改,所以编译器编译的时候只会更新改动过的class文件
编译器确定公有类路径是简单的,因为Java 规定公有类必须和文件名同名,所以引用公有类的时候,虚拟机直接通过classpath + 包路径 + 类文件名就可以找到类,但是如果引用了一个非公有类,那么非公有类就可能会被声明在不同名文件中,这是虚拟机需要搜索当前包下的所有文件(非公有类是包可见的)确定类
4.8.1 设置类路径的方法
java -classpath ...
环境变量:export CLASSPATH=...
set CLASSPATH=...
4.9 文档注释
javadoc 文档生成工具
4.9.1 注释的插入
javadoc生成文档主要从以下几个地方抽取信息:
- 包
- 公有类与接口
- 公有和受保护的构造器和方法
- 公有和受保护的域
所以在使用javadoc之前需要为以上信息编写注释.
注释以/**
开头,IDEA中用/**
+ 回车可以快速生成.
注释中的自由格式文本可以使用html标签修饰,如<code>Code</code>
,也可以使用{@code Code}
,等价.
4.9.2 类注释
必须写在import之后 类定义之前
4.9.3方法注释
主要有@author
@param
@return
@throws
这些信息
4.9.4域注释
一般针对公有域(静态常量)
4.9.5通用注释
- @author
- @version
- @since 可以表示引入特性的版本描述
- @deprecated 表示类、方法、变量已弃用
- @see “see also”
4.10 类设计技巧
- 保证数据私有
- 数据初始化
- 将类中过多的基本类型抽离
比如Customer类中的地址可以单独定义为Address类,其中包括street city state zip 等属性 - 不是所有的域都需要建立getter setter
- 保持类职责的精简
- 类名和方法名需要体现职责
- 优先使用不可变的类
原因? 目前感觉方便线程间共享