编辑: 摇摆白勺白芍 2013-06-16

List strList = list;

@SafeVarags public static List asList(T... a) 使用 ? 使用泛型前 ? 使用泛型 ? 使用尖括号 () 推断类型 List strList = new ArrayList();

List strList = new ArrayList();

List= 0) out.write(buf, 0, n);

} Section Divider 代码块参数 代码块参数 Lambda Lambda 项目 项目 Lambda 项目的动机 ? 摩尔定律、多核芯片 ? 库是 Java 的主要优势之一 C 更加强大的库是优化并行化的关键 ? 更高级的操作往往可以提高代码的可读性和性能 ? 未对并行惯用法提供更好的语言支持,人们会出于本能 使用串行惯用法 关于循环 ― 外部迭代 ? 代码与生俱来就是串行执行的 C 通过 students 进行串行迭代 C 有状态 ― 使用 > 和highestScore C 外部迭代 ― students 的客户端将决定迭代机制 double highestScore = 0.0;

for (Student s :students) { if ((s.gradYear == 2010) && (s.score > highestScore)) highestScore = s.score;

} 假设性内部迭代 ? 本质上非串行执行 C students 遍历不由开发人员决定 C 看上去像是一种功能语言 ? 匿名内部类! double highestScore = students .filter(new Predicate() { public boolean isTrue(Student s) { return s.gradYear == 2010;

}}) .map(new Extractor() { public Double extract(Student s) { return s.score;

}}) .max();

线程 线程 线程 引入 Lambda 表达式 ? 可使用 # 引入 Lambda 表达式 C 向JVM 发送信号以推迟代码执行 C 主体可以是表达式 ? Lambda 表达式不是匿名内部类的语法甜头 C 使用 JSR-292 的MethodHandle 实现 double highestScore = students .filter(#{ Student s -> s.gradYear ==

2010 }) .map(#{ Student s -> s.score }) .max();

SAM 类型 ? SAM 是一个具有单一抽象方法 (Single Abstract Method ? 没有特殊语法,仅仅是一种模式 ? 作用类似于函数类型 C Comparator → (T, T) to Boolean interface Runnable { void run();

} interface Callable { T call();

} interface Comparator { boolean compare(T x, T y);

} interface ActionListener { void actionPerformed(…);

} abstract class TimerTask { … abstract void run();

… } Lambda 表达式是 SAM 类型 ? "SAM 转换"可推断 lambda 转换的 SAM 类型 ? 调用 SAM 的方法会调用 lambda 的主体 ? 即时兼容现有库 Predicate p = # { Student s -> s.gradYear ==

2010 } boolean ok = p.isTrue(harryPotter);

executor.submit(#{-> System.out.println("hello") }) button.addActionListener(#{ ActionEvent aEvt -> System.out.println("hello");

}) 杂项 杂项 杂项 装饰组件 如今您怎么做这些? JLayer ? 最初是 java.net 上的一个开源项目 ? 特性 C Swing 组件的透明装饰器 C 控制其子组件的绘制 C 捕获所有输入及焦点事件 // wrap your component with JLayer JLayer layer = new JLayer(panel);

// custom ui provides all extra functionality layer.setUI(myLayerUI);

// add the layer as usual component frame.add(layer);

FileSystem 与Path API ? java.nio.file.FileSystem C 文件系统接口 C 可以引用 FAT、NFS、Samba、ZIP、ZFS C 利用提供程序 API 可以实现您自己的文件系统 ? java.nio.file.Path C 一个引用,用系统相关路径定位一个文件 复制和移动文件 //Defaults to user.dir FileSystem fs = FileSystems.getDefault();

Path photo = fs.getPath("/photo.jpg");

Path destination = fs.getPath("/archive/best.jpg");

try { photo.copyTo(destination , StandardCopyOption.REPLACE_EXISTING);

} catch (IOException e) { e.printStackTrace();

} 硬件和软件,集成设计、卓越性能

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题