这一章的知识点没有什么,主要是例题;
练习8:效仿实例Lunch.java的形式,创建一个名为ConnectionManager的类,该类管理一个元素为Connection对象的固定数组。客户端程序员不能直接创建Connection对象,而只能通过ConnectionManager中的某个static方法来获取他们。当ConnectionManager之中不再有对象时,它会返回null引用。在main()之中检测这些类。
package nuc.test;
import java.util.*;
class Connection {
private static Connection conn = new Connection();
public static Connection makeConnection(){
return conn;
}
}
public class ConnectionManager {
public static Connection[] conn = new Connection[5];
static {
System.out.println("开始初始化");
for(int i = 0; i < 5; i++) {
conn[i]= Connection.makeConnection();
}
}
public static Connection getConnection() {
int l = conn.length;
if(l > 0) {
Connection con = conn[--l];
conn = Arrays.copyOf(conn, l);
return con;
} else {
return null;
}
}
public static void main(String[] args){
try {
for(int i=0;i<7;i++){
Connection con=ConnectionManager.getConnection();
System.out.println(i+"、"+con);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/*
开始初始化
0、nuc.test.Connection@70dea4e
1、nuc.test.Connection@70dea4e
2、nuc.test.Connection@70dea4e
3、nuc.test.Connection@70dea4e
4、nuc.test.Connection@70dea4e
5、null
6、null
*/
练习9:(2)在access/local目录下编写以下文件(假定access/local目录在你的CLASSPATH中):
package nuc.test;
import nuc.test.*;
public class test1 {
public static void main(String[] args) {
Vector ps = new Vector();
}
}
package nuc.test;
class Vector {
public Vector() {
System.out.println("我是Vector");
}
}
因为Vector只有包访问权限;
代码优化
发现很多程序员都喜欢把复杂的输出代码简化,同样也适用于其他方法。
//:nuc/housy/test1.java
package nuc.housy;
import static nuc.test.Print.*;
public class test1 {
public static void main(String[] args) {
print("我是一");
print(100);
}
}
//:nuc/test/Print.java
package nuc.test;
import java.io.PrintStream;
public class Print {
public static void print(Object b) {
System.out.println(b);
}
public static void print() {
System.out.println();
}
public static void printnb(Object b) {
System.out.print(b);
}
public static PrintStream printf(String format,Object...args) {
return System.out.printf(format, args);
}
}