Java@Ch21.Generics 2011.05.27.

Slides:



Advertisements
Similar presentations
教育部 1 教育部技職司 南區: 2010 年 11 月 5 日 北區: 2010 年 11 月 8 日 中區: 2010 年 11 月 9 日 產學攜手合作計畫 政策宣導.
Advertisements

104 年度環保小學堂 經費編列注意事項 會計室 : 丁子芸 中華民國 103 年 10 月 22 日 會計室 : 丁子芸 中華民國 103 年 10 月 22 日.
Java 程序分类 Java Application :是完整程序,需要独立的解 释器解释运行;以 “.java” 为后缀的文件,以 main() 方法作为程序入口,由 java 编译器编译生 成字节码,由 Java 解释器加载执行字节码。 Java Applet 没有 main() 方法作为程序入口,是嵌在.
传媒学生应该如何度 过四年大学生活?. 进入大学一个多月了,用一个词形容大 学生活 自卑感 不适应 空虚感 被动感 孤独感 失望感 一、大学新生不适应大学生活的表现:
JAVA 编 程 技 术 主编 贾振华 2010年1月.
產學攜手合作計畫 楊授印 國立虎尾科技大學 推廣教育中心 主任 動力機械工程系 助理教授 民國103年10月30日.
6. 6 Overloading methods and constructors 6
生涯不卡關 ~生涯卡之簡介與實務應用 吳慧美.
名人介紹 名字:巴拉克.歐巴馬.
从生命伦理学角度 对转基因食品市场准入标准及道德评价标准的研究
C语言程序设计 李伟光.
学党章党规、学系列讲话,做合格党员 学习教育
教學經驗分享 吳毅成 國立交通大學資訊工程系 2012年4月.
第一章 資料結構導論 1-1 資料結構簡介 1-2 認識程式設計 1-3 演算法效能分析 1-4 物件導向程式設計與Java.
2013年度个人工作总结 广汽吉奥汽车销售公司 部门:售后服务部 汇报人:郑勇 Date:
Java程序设计教程 第一讲 Java概述.
中信信诚-淮安项目.
教育部技職司 北區:2015年10月12日下午 南區:2015年10月16日下午
朝陽國小學校課程發表簡報 活力四年級 導師:蔡于晨.
Java Programming Hygiene - for DIDC
面向对象的程序设计(一).
OUTLINE Android app Devolpment Flow App反組譯解說 實例 簽名詳解 DalvikByteCode
102學年度預算編製說明會 主辦單位:會計室 102/02/22.
第一章 面向对象程序设计.
第一部 认识篇 知己知彼 百战不殆.
程設一.
项目申报及投资推进工作实务 更多模板、视频教程: 兰溪市发展和改革局 2013年9月 1.
第六节 脑和脊髓的传导通路.
在“感动”中前行 —— 面对挫折say I can.
JAVA程序设计 (03) JAVA Programming
第5章 进一步讨论对象和类.
行为礼仪培训 二○○八年十一月.
Design Pattern (2) 设计模式(2) Institute of Computer Software 2018/9/21
程設一.
Object-Oriented Java Programming
第9课 北美大陆上的新体制 导入新课 新课教学 课堂小结 知识结构 巩固练习
Ch08 巢狀類別 物件導向程式設計(II).
例外處理(Exception Handling)
Classes Lecturer: 曾學文.
第六章 类的扩展与继承.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
创建型设计模式.
Java软件设计基础 5. 继承与多态.
职责链模式.
Java程序设计 第9章 继承和多态.
辅导课程十三.
SPOTO TM JAVA课程 JAVA中的OO语法
中国矿大计算机学院杨东平 第5章 接口和包 中国矿大计算机学院杨东平
Java
第九單元 Classes and data abstraction I
GT4安装与开发 李长华.
Java程序设计 第2章 基本数据类型及操作.
認識 Java.
第5讲 使用类和对象编程(三) 内部类 实例 程序控制结构 选择语句.
C/C++/Java 哪些值不是头等程序对象
简单工厂模式.
面向对象 程序设计语言基础 马骏
JAVA 编 程 技 术 主编 贾振华 2010年1月.
Inheritance -II.
Interfaces and Packages
第二章 Java基本语法 讲师:复凡.
方法進階及物件導向基礎 Lecturer: 楊昌樺.
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
方格紙上畫正方形.
Lambda 學習目標 認識Lambda語法 運用方法參考 瞭解介面預設方法 善用Functional與Stream API
所得稅法第14條、第126條修正條文 薪資所得計算方式二擇一 定額減除 特定費用減除 維持現行薪資所得特別扣除額20萬元減除方式
JAVA 程式設計與資料結構 第三章 物件的設計.
對於成員(member)存取權的限制 成員的資料被毫無限制的存取,任誰都可以指定任意值給成員,Java語言為了防止這種現象的產生,規定:有一種成員的資料不能任由類別外部的任何人隨意存取。
第6章 继承和多态 伍孝金
Summary
Presentation transcript:

Java@Ch21.Generics 2011.05.27

Outline Generics Defining Generic Classes and Interfaces Generic Methods [Sample code] GenericStack.java 、 GenericMethodDemo.java 、 WildCardDemo1.java、WildCardDemo2.java、 WildCardDemo3.java

Generics Java allow you to define generic classes, interface, and methods <Prior to JDK 1.5> Comparable c = new Date(); System.out.println(c.compareTo(“red”)); <JDK 1.5> Comparable<Date> c = new Date(); Compile 會過 但執行會錯 因為Date與String型態不符 Compile 時會檢查 Date與String型態是否符合

Defining Generic Classes and Interfaces 程式範例:  GenericStack.java

使用Generic type 優點:  Certain errors can be detected at compile time rather than at runtime. 易犯的錯:  Constructor of GenericStack should be defined as (X) public GenericStack<E>() (O) public GenericStack()

Generic Methods 程式範例:  GenericMethodDemo.java

Wildcard Generic Type 程式範例:  WildCardDemo1.java  WildCardDemo2.java

A wildcard generic type has three forms : ? Unbounded wildcard (same as ? extends Object) ? extends T bounded wildcard ? super T lower-bound wildcard (T is generic type)

• 泛型方法讓程式設計師可以用單一方法宣告,指定一組相關的方法。 • 泛型類別讓程式設計師可以用單一方法宣告,指定一組相關的類別。 • 泛型方法和類別是Java最強大的功能之一,可以達到軟體重用,並且可確保編譯時期型別安全性。

範例: Overloading 在編譯時期: 編譯器會判斷引數 integerArray的型別 並且試著找相對應型態的 printArray方法

範例: Generic method 如果幾個多載化方法對每種引數型別都做一樣的事,那麼這些多載化方法可以用泛型方法,寫起程式更簡潔、更方便。您可以寫單一個泛型方法宣告,就可以讓不同的引數型別呼叫。編譯器會依照傳給泛型方法的引數型別,適當地處理每個方法呼叫。

宣告printArray方法使用Object陣列當成參數就好。這樣就可以達到同樣的結果,因為任何Object都可以當成String輸出

常見的程式設計錯誤 宣告泛型方法時,在返回型別之前忘記放型別參數區,是一種語法錯誤。當編譯器遇到這種方法時,無法瞭解型別參數名稱。 對一個方法呼叫,如果編譯器找不到符合的非泛型或泛型方法宣告,就會發生編譯錯誤。 如果編譯器對一個方法呼叫,找不到符合的方法宣告,可是卻找到兩個以上的泛型方法符合,就會發生編譯錯誤。

程式練習:  將 Overloading 改成 Generic method 也就是使用泛型方法 printArray,印出陣列的元素