对于我也是从新人成长而来的,深知刚毕业的新手对技术的追求和渴望。对于没有项目经验的毕业生来说,往往都会学习庞大的项目想快速
提高自己。工作四五年我才明白基础才是王道,什么
架构模式只有基础知识扎实了一切都迎刃而解。
接下来我为大家做了一个
例子,把基础中的一些高级或者偏僻的方法都用上去了,以扩大新手对基础知识的
理解。目前我的总结还只是我设想的一部分(没有规范
注解),后面我会慢慢的更新。
声明:本例子只是实现了五分之一的功能,下面例子中涉及到的方法例子我都会一一做出来,请大家
耐心等待。
企业级项目实战(带源码)地址:http://zz563143188.iteye.com/blog/1825168
收集五年的开发资料及源码下载地址: http://pan.baidu.com/share/link?shareid=372668&uk=4076915866#dir/path=%2F%E5%AD%A6%E4%B9%A0%E6%96%87%E4%BB%B6
class="java" name="code">
package com.j2se.base;
import java.util.EnumMap;
import java.util.EnumSet;
import java.util.Map;
public class ContainerDemo {
interface Cmd {
public void act();
}
public class clsArr<T> {
public <T> T[] f(T[] arg) {
return arg;
}
}
public static enum enumOpt {
fileOpt, listOpt, setOpt, mapOpt, stackOpt, audioOpt, imageOpt, netOpt, swingOpt, concurrency
}
// 枚举定义方法,然后迭代
public static enum enumMethod {
classpath {
String getInfo() {
return "java的类路径:" + System.getenv("CLASSPATH");
}
},
version {
String getInfo() {
return "目前使用的jdk版本为:" + System.getProperty("java.version");
}
},
listOpt {
public String getInfo() {
return listOpt();
}
},
setOpt { // 比haseSet操作速度快
public String getInfo() {
return setOpt();
}
},
mapOpt {
// EnumMap是一个特殊的map,它要求其中的key值是来自一个enum,内部可以由数组实现
// 采用命令模式
public String getInfo() {
// enumOpt枚举为key,cmd接口为value并义了一个act动作
EnumMap<enumOpt, Cmd> em = new EnumMap<enumOpt, Cmd>(
enumOpt.class);
em.put(enumOpt.fileOpt, new Cmd() {
public void act() {
audioOpt();
}
});
em.put(enumOpt.imageOpt, new Cmd() {
public void act() {
imageOpt();
}
});
em.put(enumOpt.netOpt, new Cmd() {
public void act() {
netOpt();
}
});
// 这与代理差不多,但只是手工执行
for (Map.Entry<enumOpt, Cmd> emItem : em.entrySet()) {
System.out.println("/***\n正在执行:" + emItem.getKey() + " 动作");
emItem.getValue().act(); // 调用该命令的方法
System.out.println("执行:" + emItem.getKey() + " 完成\n***/\n");
}
return "执行完mapOpt枚举方法";
}
},
stackOpt {
public String getInfo() {
return stackOpt();
}
},
swingOpt {
public String getInfo() {
return swingOpt();
}
};
// 如果是不是抽象的方法,就会是枚举默认的行为
abstract String getInfo(); // 必须有一个同名的抽象方法,供外部函数调用
}
public static void excuMethod() {
System.out.println(" 1.直接迭代枚举");
for (enumMethod eMd : enumMethod.values()) {
System.out.println("直接迭代枚举:" + eMd.getInfo());
}
System.out.println("***************************************");
// enumSet超过enum的64个参数必要的时候会增加,类型是long,可以增删改查枚举元素
System.out.println("2.enumset迭代枚举");
EnumSet<enumMethod> eSet = EnumSet.noneOf(enumMethod.class); //=EnumSet.of()
// eSet=EnumSet.allOf(enumMethod.class); //把enumMethod所有值添加进来
eSet.add(enumMethod.classpath);
eSet.addAll(EnumSet.of(enumMethod.version, enumMethod.setOpt));
eSet.add(enumMethod.mapOpt);// 只能添加不重复项
// 只有EnumSet才会range这个方法
eSet.remove(EnumSet.range(enumMethod.classpath, enumMethod.setOpt));
// eSet = EnumSet.complementOf(eSet); //也就是不包含sSet已有内容,差不多求反的意思
for (enumMethod em : eSet) {
System.out.println("EnumSet迭代枚举: " + em.getInfo());// 调用方法
// 根据条件只调用一个方法,或者加一些内容
}
}
/**
* @param args
*/
public static void main(String[] args) {
// E ? = arrayOfE[j]; localEnumSet.add(?);
// TODO Auto-generated method stub
// 动态代理 entrySet.toArray的用法
// 插入,排序,各一起 并测试出时间 队列,双向队列 用一个swing界面来测试
excuMethod();
}
public static String fileOpt() {
return "执行完fileOpt方法";
}
public static String imageOpt() {
return "执行完fileOpt方法";
}
public static String netOpt() {
return "执行完netOpt方法";
}
public static String setOpt() {
return "执行完setOpt方法";
}
public static String listOpt() {
return "执行完fileOpt方法";
}
public static String stackOpt() {
return "执行完stackOpt方法";
}
public static String audioOpt() {
return "执行完audioOpt方法";
}
public static String swingOpt() {
return "执行完swingOpt方法";
}
}