- 浏览: 850145 次
- 性别:
- 来自: 深圳
-
文章分类
- 全部博客 (379)
- struts (5)
- hibernate (16)
- spring (16)
- ssh (20)
- MySQL (16)
- 数据库脚本 (2)
- DownLoad (1)
- GAE (5)
- Java (103)
- LoadRunner (2)
- VF (1)
- 学习资料 (24)
- 软件使用 (21)
- 通信类 (4)
- 生活 (3)
- J2ME (1)
- 心理学 (1)
- Linux (26)
- Android (3)
- Oracle (1)
- 面向对象概念&面试准备 (11)
- ExtJs (2)
- Google Map (1)
- Flex (47)
- 算法研究 (1)
- share (20)
- python (1)
- MongoDB (7)
- centos6 (13)
- C++ (8)
- DB2 (3)
- C# (1)
- 代码片段 (24)
- Lucene (2)
- php (1)
- NodeJS (1)
- Express (1)
最新评论
-
shua1991:
已阅,我表示同意。
Eclipse统计代码行数 -
nakedou:
写的不错,挺详细的
在CentOS中使用 yum 安装MongoDB及服务器端配置 -
sjp524617477:
好方法
Eclipse统计代码行数 -
simpletrc:
<script>ale ...
Java写到.txt文件,如何实现换行 -
csdn_zuoqiang:
Apache Ftp Server,目前是1.0.4,非常好的 ...
Apache FtpServer在64位系统下服务不能启动解决方法
例一:
package genericType; public class Pair<T> { // 构造器一 public Pair() { this.min = null; this.max = null; } //构造器二 public Pair(T _min,T _max){ this.min = _min; this.max = _max; } //设置器、访问器 public T getMin() { return min; } public void setMin(T min) { this.min = min; } public T getMax() { return max; } public void setMax(T max) { this.max = max; } // 私有域 private T min; private T max; }
package genericType; public class ArrayAlg { //定义一个泛型方法,含有类型变量的限定, //只能被实现了Comparable接口的类的数组调用 public static < T extends Comparable<? super T> > Pair<T> minmax(T[] a){ if(a == null ||a.length == 0) return null; T min = a[0]; T max = a[0]; for (int i = 1; i < a.length; i++) { if(min.compareTo(a[i]) > 0) min = a[i]; if(max.compareTo(a[i]) < 0) max = a[i]; } return new Pair<T>(min,max); } //定义一个泛型方法 public static <T> T getMiddle(T[] a){ return a[a.length / 2]; } }
package genericType; import java.util.Calendar; import java.util.GregorianCalendar; public class PairTest { public static void main(String[] args) { String[] words = {"Mary","had","a","little","lamb"}; Pair<String> mm = ArrayAlg.minmax(words); System.out.println("Min = " + mm.getMin()); System.out.println("Max = " + mm.getMax()); Integer[] names = {1,2,3}; Integer middle = ArrayAlg.getMiddle(names); System.out.println("Middle = " + middle); GregorianCalendar[] birthdays = { new GregorianCalendar(1906,Calendar.DECEMBER,9), new GregorianCalendar(1815,Calendar.DECEMBER,10), new GregorianCalendar(1903,Calendar.DECEMBER,3), new GregorianCalendar(1910,Calendar.JUNE,22), }; Pair<GregorianCalendar> nn = ArrayAlg.minmax(birthdays); System.out.println("Min = " + nn.getMin().getTime()); System.out.println("Max = " + nn.getMax().getTime()); } }
结果:
Min = Mary
Max = little
Middle = 2
Min = Sun Dec 10 00:00:00 CST 1815
Max = Wed Jun 22 00:00:00 CST 1910
例二:
package genericType2; import java.util.Date; import java.util.GregorianCalendar; public class Employee { // 构造器 public Employee() { } public Employee(String n,double s,int year,int month,int day) { this.name = n; this.salary = s; GregorianCalendar calendar = new GregorianCalendar(year,month-1,day); this.hireDay = calendar.getTime(); } // 访问器 、 更改器 public String getName() { return name; } public double getSalary() { return salary; } public Date getHireDay() { return hireDay; } // 工资计算 public void raiseSalary(double byPercent){ double raise = this.salary * byPercent / 100 ; this.salary = this.salary + raise ; } // 私有域 private String name ; private double salary ; private Date hireDay ; }
package genericType2; public class Manager extends Employee { // 构造器 public Manager(String n,double s,int year,int month,int day) { super(n,s,year,month,day); this.bonus = 0 ; } // 覆盖父类方法 public double getSalary(){ double baseSalary = super.getSalary(); return baseSalary + bonus ; } //访问器 、 更改器 public double getBonus() { return bonus; } public void setBonus(double bonus) { this.bonus = bonus; } // 私有域 private double bonus ; }
package genericType2; public class Pair<T> { // 构造器一 public Pair() { this.min = null; this.max = null; } //构造器二 public Pair(T _min,T _max){ this.min = _min; this.max = _max; } //设置器、访问器 public T getMin() { return min; } public void setMin(T min) { this.min = min; } public T getMax() { return max; } public void setMax(T max) { this.max = max; } // 私有域 private T min; private T max; }
package genericType2; public class PairAlg { public static boolean hashNulls(Pair<?> p){ return p.getMin() == null || p.getMax() == null; } //通配符捕获 public static void swap(Pair<?> p){ swapHelper(p); } // 辅助swap方法 public static <T> void swapHelper(Pair<T> p) { T t = p.getMin(); p.setMin(p.getMax()); p.setMax(t); } }
package genericType2; public class PairTest2 { public static void main(String[] args) { Manager ceo = new Manager("张作强", 800000, 2008, 12, 15); Manager cfo = new Manager("陈惠仪", 600000, 2008, 12, 15); Pair<Manager> buddies = new Pair<Manager>(ceo,cfo); printBuddies(buddies); ceo.setBonus(1000000); cfo.setBonus(500000); Manager[] managers = {ceo , cfo}; Pair<Employee> result = new Pair<Employee>(); minMaxBonus(managers , result); System.out.println("Min : " + result.getMin().getName() + " , Max : " + result.getMax().getName()); System.out.println("-------- swap --------"); maxMinBonus(managers,result); System.out.println("Min : " + result.getMin().getName() + " , Max : " + result.getMax().getName()); } // 通配符的超类型限定<? super Manager> private static void maxMinBonus(Manager[] a, Pair<? super Manager> result) { minMaxBonus(a, result); // OK -- swapHelper captures wildcard type PairAlg.swapHelper(result); } // 通配符的超类型限定<? super Manager> private static void minMaxBonus(Manager[] a, Pair<? super Manager> result) { if(a == null || a.length == 0) return; Manager min = a[0]; Manager max = a[0]; for (int i = 1; i < a.length; i++) { if(min.getBonus() > a[i].getBonus()) min = a[i]; if(max.getBonus() < a[i].getBonus()) max = a[i]; } result.setMin(min); result.setMax(max); } //通配符类型<? extends Employee> private static void printBuddies(Pair<? extends Employee> p) { Employee min = p.getMin(); Employee max = p.getMax(); System.out.println(min.getName() + " and " + max.getName() + " are buddies."); } }
结果:
张作强 and 陈惠仪 are buddies.
Min : 陈惠仪 , Max : 张作强
-------- swap --------
Min : 张作强 , Max : 陈惠仪
发表评论
-
微信JS
2013-10-26 21:17 2115<div class="iteye-blog- ... -
ubuntu下MySQL用source命令导入sql文件出现乱码解决方法
2012-11-18 23:46 1617首先建立数据库的时候指明数据库编码如: CREA ... -
RandomAccessFile
2012-10-18 18:16 1002public void run() { try { ... -
java中多种方式读文件
2012-10-18 16:53 1004java中多种方式读文件一、多种方式读文件内容。1、按字节读取 ... -
FileChannelMain
2012-10-15 18:12 1125package scan; import java ... -
Apache FtpServer在64位系统下服务不能启动解决方法
2012-06-10 21:29 6952Apache FTPServer是一款用Java开发的 ... -
Java 集合类
2012-06-07 22:03 1900Java 集合类 1. 为什么要了解J ... -
short、int、long与byte之间的转换工具类
2012-05-31 11:05 4546/** * 各基础类型与byte之间的转换 * ... -
Linux Mint 13 配置JAVA 环境
2012-05-24 22:35 26740.1--下载 JAVA ... -
FatJar+Exe4j+Inno Setup 生成可执行的exe文件
2012-04-17 10:54 14771、fatjar 是Eclipse的一个免费的插件。它的 ... -
JPanel JTextField add Focus 获取焦点解决方案
2012-03-30 21:29 3042public class TabPagePanel ex ... -
JList List<E> Page 分页
2012-03-30 21:28 1775package view.retrieve.comps. ... -
JButton setAction的BUG
2012-03-23 10:53 1321今天在使用JButton的时候,想用setText()setI ... -
自定义JTabbedPane皮肤
2012-03-22 12:05 4757package ui; import java.awt. ... -
两个工具类
2012-03-17 21:27 908package com.retrieve.utils; ... -
两个工具类
2012-03-17 21:27 0package com.retrieve.utils; ... -
mysql、sqlserver、oracle分页,java分页统一接口实现
2012-03-13 17:56 0定义: pageStart 起始页,pageEnd 终止页, ... -
Invalid command: InetLoad::load
2012-03-06 16:41 1405Invalid command: InetLoad::load ... -
NIO: High Performance File Copying
2012-03-01 17:25 1220In a previous tip, I discussed ... -
自定义JList
2012-02-03 15:39 820自定义JList。
相关推荐
此外,文件名`Java.jpg`可能表示的是一个与这个泛型例子相关的图片,可能是一个截图或者示意图,用于帮助理解泛型的概念或者`MyFirstGeneric`类的结构和用法。在实际学习过程中,视觉辅助工具往往能够帮助我们更好地...
本文将深入探讨这三个主题,并通过具体的例子进行学习。 首先,我们来看Java IO流。IO流在Java中是用来处理输入输出操作的核心机制。它允许程序与外部设备(如硬盘、键盘、网络等)进行数据交换。Java IO流分为字节...
Java泛型是Java编程语言中的一个关键特性,它在2004年随着JDK 5.0的发布被引入,极大地增强了类型安全性和代码可读性。...对于Java泛型的例子,可以通过运行和分析压缩包中的`generic`文件来加深理解和实践。
以下是一个使用泛型的例子,展示了如何创建一个泛型类和泛型方法: ```java // 泛型类示例 public class Box<T> { private T t; public void set(T t) { this.t = t; } public T get() { return t; } } //...
在"高级无敌,c#泛型例子"这个主题中,我们将深入探讨C#泛型的基本概念、优势以及如何实际应用。 首先,泛型是C#中引入的一种类型参数化机制。在定义类或方法时,我们可以使用类型参数(如`T`)来代替具体的类型,...
- **避免运行时错误**:使用泛型可以在编译时捕获原本在运行时才会出现的类型错误,例如`GenericComponent.java`的例子。 - **渲染类的抽象**:`ComponentRenderer`抽象类使用泛型表示渲染特定类型组件的逻辑,如`...
在这个例子中,`T` 是一个类型参数,表示栈可以处理的任何类型。在创建栈实例时,我们需要指定具体的类型,如 `Stack<int>` 或 `Stack<string>`。 #### 四、泛型类实例化的理论 C#泛型类在编译时并不会生成具体的...
在“C#学习之路--泛型”这个主题中,我们将深入探讨泛型的基本概念、泛型的定义和类型参数、泛型类和泛型接口,以及泛型委托和泛型事件。 **泛型的基本概念** 泛型是C# 2.0引入的一个新特性,它的核心思想是推迟...
通过学习STL,你可以更好地理解泛型编程在实际开发中的应用。 “bookinfo.dat”可能是一个包含书籍信息的数据文件,这通常涉及到数据结构和文件I/O操作。在C++中,泛型编程可以帮助我们编写出处理不同类型数据的...
通过`Fanxing.java`和`A.java`这两个文件,我们可以学习到如何声明、实例化和使用泛型,理解泛型在实际编程中的作用和优势。实践这些知识,可以帮助我们写出更加安全、高效和易于维护的Java代码。
在类 `Gclass<T>` 的例子中,`T` 是一个代表任意类型的占位符,可以被替换为任何实际类型。`getA()` 和 `setA(T)` 方法使用了这个类型参数,确保操作的对象类型一致。 3. **泛型中的继承概念** 泛型并不直接支持...
- `泛型例子.rar`可能是独立的泛型代码示例,包括如何声明和使用泛型类、接口和方法。 - `DAO(1).rar`可能包含使用泛型的DAO设计模式示例,展示了如何创建泛型DAO以处理不同类型的数据对象。 综上所述,SSH框架...
JDK1.5泛型讲解 不错的东西 对jdk需要研究的朋友不妨看看 新手也来学习学习```
### C# 泛型的应用详解 #### 一、泛型的概念 ...通过学习和掌握泛型的基本概念和用法,开发者可以编写更加高效、可维护的代码。无论是对于初学者还是资深开发人员来说,熟练掌握泛型都是提升编程技能的重要一步。
通过学习这个示例,开发者可以学习到如何在实际项目中有效地应用泛型和反射,提高代码的复用性和可维护性。 总的来说,"泛型之FormDemo"是一个关于如何在Windows Forms开发中使用泛型和反射来优化代码的实例。通过...
`Func, T2, TResult>`和`Action, T2>`等预定义的泛型委托就是很好的例子。我们可以创建自己的泛型委托,如`MyGenericDelegate, U, V>`: ```csharp public delegate V MyGenericDelegate, U, V>(T arg1, U arg2); `...
通过阅读SUN公司的Java泛型编程文档,你可以深入学习这些概念,理解如何在实际项目中有效利用泛型提高代码质量,减少类型转换的麻烦,以及如何避免潜在的运行时错误。文档中的例子和解释将帮助你更好地掌握泛型的...
在这个例子中,`gson.toJson()`将泛型对象转换为JSON字符串,`gson.fromJson()`则将服务器返回的JSON字符串反序列化回泛型类型`T`。 总结起来,这个案例涵盖了以下知识点: 1. 泛型的概念和C#中的泛型使用。 2. Web...
在这个例子中,`T`是类型参数,代表某种未知的数据类型。当我们创建`Container`实例时,可以指定`T`的具体类型,例如`Container<String>`或`Container<Integer>`。 现在让我们讨论继承泛型类。假设我们有一个泛型类...