Background. 7 月 20 日 Background 7 月 20 日 我原以为这是平凡的一天.

Slides:



Advertisements
Similar presentations
 Specifies a set of methods (i.e., method headings) that any class that implements that interface must have.  An interface is a type (but is not a class).
Advertisements

Problem Solving 5 Using Java API for Searching and Sorting Applications ICS-201 Introduction to Computing II Semester 071.
Reflection Reflection is the ability of a program to examine and modify the structure and behavior of an object at runtime.
METHOD OVERRIDING Sub class can override the methods defined by the super class. Overridden Methods in the sub classes should have same name, same signature.
第十二章 常微分方程 返回. 一、主要内容 基本概念 一阶方程 类 型 1. 直接积分法 2. 可分离变量 3. 齐次方程 4. 可化为齐次 方程 5. 全微分方程 6. 线性方程 类 型 1. 直接积分法 2. 可分离变量 3. 齐次方程 4. 可化为齐次 方程 5. 全微分方程 6. 线性方程.
DCN 多核防火墙快速配置之 目的 NAT 配置 神州数码网络 蒋忠平.
Game Theory 窦衍旭. 什么是博弈论 博弈论,经济学中很著名的理论, 就是在 信息不对称的情况下根据对手可能作出的 决策作出决策,通俗地说,如果我这样做, 那么对手会怎样做,而对手基于我的做法 作出决策,我又该怎么做来应对。
作者: 张 红 学习提示: 1 、科学家做了几次试验?是怎么 做试验的?试验结果如何?通过 试验证明了什么? 2 、从蝙蝠身上得到了什么启发? 先 自己认真读课文,找一找,画 一画。然后以小组为单位讨论交 流,并填写试验报告单。
嵌入式操作系统 陈香兰 Fall 系统调用 10/27/09 嵌入式 OS 3/12 系统调用的意义  操作系统为用户态进程与硬件设备进行交互提供 了一组接口 —— 系统调用  把用户从底层的硬件编程中解放出来  极大的提高了系统的安全性  使用户程序具有可移植性.
系统调用 Embedded Operating Systems2 系统调用的意义 操作系统为用户态进程与硬件设备进行交互提 供了一组接口 —— 系统调用 把用户从底层的硬件编程中解放出来 极大的提高了系统的安全性 使用户程序具有可移植性.
地理信息系统概述. 数据和信息 (Data & Information) 数据 原始事实 如:员工姓名, 数据可以有数值、图形、声音、视觉数据等 信息 以一定规则组织在一起的事实的集合。
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第六十二讲 ) 离散数学. 最后,我们构造能识别 A 的 Kleene 闭包 A* 的自动机 M A* =(S A* , I , f A* , s A* , F A* ) , 令 S A* 包括所有的 S A 的状态以及一个 附加的状态 s.
Introduction to Java Programming Lecture 15 Objects and Classes.
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第四十八讲 ) 离散数学. 例 设 S 是一个非空集合, ρ ( s )是 S 的幂集合。 不难证明 :(ρ(S),∩, ∪,ˉ, ,S) 是一个布尔代数。 其中: A∩B 表示 A , B 的交集; A ∪ B 表示 A ,
线性代数习题课 吉林大学 术洪亮 第一讲 行 列 式 前面我们已经学习了关 于行列式的概念和一些基本 理论,其主要内容可概括为:
翻拍那些事儿. 倾城之恋 倾城之恋 今天的事,她不是有意的,但无论 如何,她给了她们一点颜色看看。 她们以为她这一辈子已经完了么? 早哩!她微笑着。宝络心里一定也 在骂她,骂得比四奶奶的话还要难 听。可是她知道宝络恨虽恨她,同 时也对她刮目相看,肃然起敬。一 个女人,再好些,得不着异性的爱,
第二章 随机变量及其分布 第一节 随机变量及其分布函数 一、随机变量 用数量来表示试验的基本事件 定义 1 设试验 的基本空间为 , ,如果对试验 的每一个基 本事件 ,规定一个实数记作 与之对应,这样就得到一个定义在基本空 间 上的一个单值实函数 ,称变量 为随机变量. 随机变量常用字母 、 、 等表示.或用.
数 学 系 University of Science and Technology of China DEPARTMENT OF MATHEMATICS 第 3 章 曲线拟合的最小二乘法 给出一组离散点,确定一个函数逼近原函数,插值是这样的一种手段。 在实际中,数据不可避免的会有误差,插值函数会将这些误差也包括在内。
聚合物在生物高分子分离中的应用 王延梅 中国科学技术大学高分子科学与工程系 Tel
Unit 1 How do you study for a test ?. 重申目标 ( 1 )学习单词 : specific, memorize, grammmar, differently, frustrate, frustrating, quickly, add ( 2 )掌握短语: ask.
9的乘法口诀 1 .把口诀说完全。 二八( ) 四六( ) 五八( ) 六八( ) 三七( ) 三八( ) 六七( ) 五七( ) 五六( ) 十六 四十八 四十二 二十四 二十一 三十五 四十 二十四 三十 2 .口算, 并说出用的是哪句口诀。 8×8= 4×6= 7×5= 6×8= 5×8=
What is static? CS340100, NTHU Yoshi. Static? 靜態 ? class Test { static int staticX; int instanceX; public Test(int var1, int var2) { this.staticX = var1;
周期信号的傅里叶变换. 典型非周期信号 ( 如指数信号, 矩形信号等 ) 都是满足绝对可 积(或绝对可和)条件的能量信号,其傅里叶变换都存在, 但绝对可积(或绝对可和)条件仅是充分条件, 而不是必 要条件。引入了广义函数的概念,在允许傅里叶变换采用 冲激函数的前提下, 使许多并不满足绝对可积条件的功率.
电磁学的一种新的解释 —— 电磁空间 胡凌志 车韶 (物理一班) 内容概要: 1. 想法的由来。 2. 一些概念。 3. 与经典理论的符合。 4. 解释 A-B 效应。 5. 理论的美与缺陷。
程序设计是计算机学科的核心和灵魂程序设计是计算机学科的核心和灵魂 程序设计基础 第十一章 面向对象软件构造.
Department of Mathematics 第二章 解析函数 第一节 解析函数的概念 与 C-R 条件 第二节 初等解析函数 第三节 初等多值函数.
Do you want to know more about the Amber Room?
Section B 七年级人教新目标上册 Unit 4 Where’s my backpack?
Course Introduction Programming Language(Using Java)
物件導向實習 極高的忘記答題率 … AB 卷都有的題目 : 4(1). Define method overloading 明明寫出了方法, 卻不回答老師的題目 (1)( 只要 寫出定義就好了 ) 另外, 讀題一定要仔細 : Two overloaded methods average.
Unit 2 What should I do? Period 1 Section A: 1a 1b 1c 正安县建政中学 陈光玉.
Talk about Talk about hopes and dreams hopes and dreams.
16 、要 下 雨 了 ( 1 )请小朋友们打开课本 92 页。这段话讲了谁 在什么地方,干什么呢? ( 2 )这时,小白兔有什么感觉呢? ( 3 )小白兔直起了身子,这时,它看到了谁呢?
软件技术专业 熊君丽 第 5 章: Spring 集成 hibernate. 5.1spring 整合 ORM 技术 1 方便基础设施的搭建 2 异常封装 3 统一的事务管理 4 允许混合使用多个 ORM 框架 5 方便单元测试 软件技术专业广东科学技术职业学院.
Unit 1 Can you play the guitar?
A Farewell Party Recycle 2. John likes collecting stamps, Chen Jie likes drawing pictures Mike likes playing violin,
第一节 物质的量. 聚小成大,聚微成宏 想想看: 你如何用托盘天平称出一粒米的质 量(假设每粒大米的质量一样大 )
Unit 2. You look worried. What’s the matter? I often feel very tired. What should I do?
How to avoid common mistakes in English sentence-writing.
Dynamic memory allocation Huang Alex. Agenda General memory management conception and topic: –Memory allocation methods –Major faults and associated strategy.
Ruby on Rails -- a short intro Tao Zhang. Outline Part 1: sth. about script language Part 2: sth. about RoR.
王 国 庆山 西 农 业 大 学 园 艺 学 院王 国 庆山 西 农 业 大 学 园 艺 学 院王 国 庆山 西 农 业 大 学 园 艺 学 院王 国 庆山 西 农 业 大 学 园 艺 学 院 透 视.
脱口而出 即兴演讲的结构. 即兴演讲的价值 即兴演讲的价值 即兴演讲的结构 即兴演讲的结构 即兴演讲的要求 即兴演讲的要求 即兴演讲的评估 即兴演讲的评估.
是什么? 有什么用? 机要文件科研成果商业机密 原创设计 重要资料,有时难免被泄露或被剽窃。
表单自定义 “ 表单自定义 ” 功能是用于制作表单的 工具,用数飞 OA 提供的表单自定义 功能能够快速制作出内容丰富、格 式规范、美观的表单。
抓大放小是一种智慧 安徽 HR 经理  PPT 分享 2010/01 下 总 第 15 期 抓大放小是一种智慧.
Unit 7 How much are these socks? Section B (2a-3b)
SMIE-121 Software Design II School of Mobile Information Engineering, Sun Yat-sen University Lecture.
Wow, Would I Love to Do That The Forth Group. OUTLINE Tell you the story Analysis Words & Sentences.
Unit 7 How much are these socks? Period 1 a T-shirt a sweater a skirt a hat pants shorts shoes socks.
演示场景. 类图 配置 HibernateApplicationContext.xml hibernate.cfg.xml 创建数据库 – ooad/ooad 关于 Library/Project 模板.
Java 程序设计 Java 程序设计 Java Programming Spring, 2013.
Object-Oriented Design and Programming (Java). 2 Topics Covered Today 2.1 Implementing Classes –2.1.3 Method equals and Method toString –1.2.6 Implementing.
Unit 7 How much are these socks? Do you like shopping? Let’s go shopping!
Unit 1 Go for it Grade 8 Class Three/Four, Grade Two.
逻辑设计基础 1 第 7 章 多级与(或)非门电路 逻辑设计基础 多级门电路.
What are they learning now? Do you enjoy learning English?
Unit 4 Hobbies (Cartoon time & Checkout time) Goals for this lesson 2 、 I can understand and act the cartoon. 我能理解并表演动画。 1 、 I can talk about hobbies.
Chapter 8 Error Handing with Exceptions. 集美大学 计算机工程学院 Java 程序设计 What really matters is what happens after the error occurs. How is the error.
Letters A a apple B b book C c cat D d door.
Grammar Modal verbs 情态动词 (II) Unit2 Healthy eating.
UNIT 5: Determiners 本单元学习目标: 辨别不同类型的限定词; 了解限定词与名词的搭配关系; 掌握不同类型的句子中限定词的使用方法。 主讲教师:张朝霞.
Grammar and usage Unit 1. A free talk How many of you want to learn English? Can you tell me why you want to learn it?
Unit 2 = the second unit Welcome to Sunshine Town ( Reading II)
From Composer to Interpreter to Listener Paragraph 4 By Tiffany.
目录 上页 下页 返回 结束 二、无界函数反常积分的审敛法 * 第五节 反常积分 无穷限的反常积分 无界函数的反常积分 一、无穷限反常积分的审敛法 反常积分的审敛法  函数 第五章 第五章.
SCI 数据库检索练习参考 本练习完全依照 SCI 数据库实际检索过程而 实现。 本练习完全依照 SCI 数据库实际检索过程而 实现。 练习中,选择了可以举一反三的题目,读 者可以根据题目进行另外的检索练习,如: 可将 “ 与 ” 运算检索改为 “ 或 ” 、 “ 非 ” 运算检索 等等。 练习中,选择了可以举一反三的题目,读.
Is this your pencil? Unit 3 a schoolbag a book an English book What’s this (in English)? It’s a/an… What’s that (in English)? It’s a/an …. this 指近处的物体.
老虎机怎么玩. 如果你从未开设账户开户彩金在网 上赌场, 老虎机, 扑克室或体育帐户 ,你可能会怀疑这个提议是否合法 。 我们都知道这句话的智慧,如果 一个提案听起来不错,那么它可能 是 “ 或者没有免费的午餐 ” 。 投注返水所以有什么问题? 当赌场 为您提供 100 到 1,000 美元的免费资.
吸油口压力对泵的 影响知多少 第一季 C.L i VEE #PUMPtalks | 第3集第3集第3集第3集.
Presentation transcript:

Background

7 月 20 日

Background 7 月 20 日 我原以为这是平凡的一天

Background 但我举了不该举的手

Background 但我举了不该举的手 说了不该说的话

Background 但我举了不该举的手 说了不该说的话 听了不该听的怂恿

这是轮子 ——Java 泛型完善 2011 级 ACM 班 陈志鹏

Outline Background Motivation & Criteria Design & Implementation One More Example Advancement Discussion & Conclusion Reference

class cat { public: void say() { printf("I am a cat.\n"); } }; class mouse { public: void say() { printf("I am a mouse.\n"); } }; Background template void say(T a) { a.say(); } int main() { cat acat; mouse amouse; say(acat); say(amouse); return 0; } C++

class cat { public void say() { System.out.println ("I am a cat.\n"); } }; class mouse { public void say() { System.out.println ("I am a mouse.\n"); } }; Background public class example { public static void say(T a) { a.say(); } Public static void main(String[] arg) { cat acat; mouse amouse; say(acat); say(amouse); return 0; } Java

class cat { public void say() { System.out.println ("I am a cat.\n"); } }; class mouse { public void say() { System.out.println ("I am a mouse.\n"); } }; Background public class example { public static void say(T a) { a.say(); } Public static void main(String[] arg) { cat acat; mouse amouse; say(acat); say(amouse); return 0; } Java The method say() is undefined for type T

class cat { public void say() { System.out.println ("I am a cat.\n"); } }; class mouse { public void say() { System.out.println ("I am a mouse.\n"); } }; Background public class example { public static void say(T a) { a.say(); } Public static void main(String[] arg) { cat acat; mouse amouse; say(acat); say(amouse); return 0; } Java The method say() is undefined for type T Exception in thread "main" java.lang.Error: Unresolved compilation problem: The method say() is undefined for the type T

class cat { public void say() { System.out.println ("I am a cat.\n"); } }; class mouse { public void say() { System.out.println ("I am a mouse.\n"); } }; Background public class example { public static void say(T a) { a.say(); } Public static void main(String[] arg) { cat acat; mouse amouse; say(acat); say(amouse); return 0; } Java

Motivation & Criteria 完善 Java 的泛型 基于 Java 封装与安全

Design & Implementation 所有类继承 Object 多态 反射

Design & Implementation public static void say(T a) { Class demo = a.getClass(); try { Method met = demo.getMethod(“say”); met.invoke(a); } catch (Exception ex) {} } say(acat); Java

One More Example class cat { public : int key; }; class mouse { public : int key; }; template bool cmp(T a, T b) { return a.key < b.key; } int main() { cat cats[100]; mouse mice[100]; //Initialization… sort(cats, cats + 100, cmp); sort(mice, mice + 100, cmp); //Output… } C++

One More Example class cat { public : int key; }; class mouse { public : int key; }; template bool cmp(T a, T b) { return a.key < b.key; } int main() { cat cats[100]; mouse mice[100]; //Initialization… sort(cats, cats + 100, cmp); sort(mice, mice + 100, cmp); //Output… } C++ error: no matching function for call to `sort(cat[100], cat*, )'

One More Example class cat { public : int key; }; class mouse { public : int key; }; template bool cmp(T a, T b) { return a.key < b.key; } int main() { cat cats[100]; mouse mice[100]; //Initialization… sort(cats, cats + 100, cmp); sort(mice, mice + 100, cmp); //Output… } C++

One More Example public static class comp implements Comparator{ public int compare(Object o1, Object o2) { Class demo = o1.getClass; Object a = null, b = null; try { Field field = demo.getDeclaredField("key"); a = field.get(o1); b = field.get(o2); } catch (Exception ex) { } return (int)a - (int)b; }} public static void main(String[] arg) { //Initialization… Arrays.sort(cats, new comp()); //Output… } 那些 C++ 做不到的事 泛型在这里 Java

Advancement 多参数 返回值 良好封装 权限修饰符 public & private 异常处理

Advancement 多参数 – public static void say(T a, Class[] cla, Object… objs) – Method met = demo.getMethod(“…”, cla); – met.invoke(a, objs); – say(acat, new Class[] {String.class, String.class}, “Hi”, “I am a cat”) 返回值 良好封装 权限修饰符 public&private 异常处理 Class[] cla = new Class[objs.length] cla[i] = objs[i].getClass; Java

Advancement 多参数 返回值 – public static int say(T a) – return met.invoke(a); – int ans = say(acat); 良好封装 权限修饰符 public&private 异常处理 Java

Java Advancement 良好封装 public static S run(T a, String method, Class[] cla, Object… objs) { Class x = a.getClass(); Object ans = null; try { Method met = x.getMethod(method, cla); ans = met.invoke(a, objs); } catch (Exception ex) {} return (S) ans; } returnValue = run(acat, “say”, new Class[] {String.class, String.class}, “Hi”, “I am a cat.”);

Advancement 多参数 返回值 良好封装 权限修饰符 public&private – int mo = field.getModifiers(); – String priv = Modifier.toString(mo); – int mo = met.getModifiers(); 异常处理 Java

Discussion & Conclusion Generic Programming – 1980 Ada -> 1983 C++ – 2004 jdk 1.5

Discussion & Conclusion Generic Programming – 1980 Ada -> 1983 C++ – 2004 jdk 1.5 WHY?

Discussion & Conclusion Generic Programming – 1980 Ada -> 1983 C++ – 2004 JDK 1.5 & J2SE 5.0 WHY? – No requirement – Impact of mainstream – Safety & Elegant Functional programming CLU Can be implemented by other ways

Discussion & Conclusion Generic Programming – 1980 Ada -> 1983 C++ – 2004 JDK 1.5 & J2SE 5.0 WHY? – No requirement – Impact of mainstream – Safety & Elegant Other generic features Functional programming CLU Can be implemented by other ways ? 通配符

Reference 《 Java 核心技术》 … Wiki…

END THANKS