第四章 对象与类

4.8 类路径

设置共享类、Jar

  1. 将类放值目录/…/testLibs/,注意类的包路径需要和文件路径一致(包树状结构)

  2. 将Jar(achieve.jar)放至目录/…/testAchieves/

  3. 设置类路径,其中对class目录需要写目录名,对jar文件需要带上jar文件名,因为jar文件本质是class的归档,以ZIP的形式组织文件和子目录.例如:
    /.../testLibs/;/.../testAchieves/achieve.jar;.

    UNIX 系统中使用:分隔,WINDOWS系统中使用;分隔

对上述例子,如果虚拟机需要寻找类com.test.www.Test.class 会先去JAVA_HOME目录下的lib也就是jre/libjre/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时,如果导入了*所有类,那么再引用一个未声明的类时,编译器会搜索包下所有的类,有且仅有一个符合时,才通过编译.
例如:

1
2
import java.lang.*;
import java.util.*;

假如该文件引用了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 类设计技巧

  1. 保证数据私有
  2. 数据初始化
  3. 将类中过多的基本类型抽离
    比如Customer类中的地址可以单独定义为Address类,其中包括street city state zip 等属性
  4. 不是所有的域都需要建立getter setter
  5. 保持类职责的精简
  6. 类名和方法名需要体现职责
  7. 优先使用不可变的类
    原因? 目前感觉方便线程间共享
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值