1.为什么要用泛型
JDK 1.5之前,对象保存到集合中就会失去其特性,取出时要手动进行人工强制类型转化,集合元素中的数据类型可以不统一, 例:List集合
list=new ArrayList();
list.add("aa");
list.add(1);
list.add(12.5);
加入泛型之后,list集合只能放同一类型的数据 ,就避免了list元素类型不统一的现象出现。
2.关于泛型应注意:
使用泛型时,泛型类型必须为引用数据类型,不能为基本数据类型, java中的普通方法,构造方法,静态方法中都可以使用泛型 ,方法使用泛型之前必须先对泛型进行声明,可以使任意字母,一般都要大写
3.怎么样取泛型集合中的数据:
使用Iterator迭代器迭代,使用普通for循环,使用for循环的新特性
4.自定义泛型:
4-1.泛型定义在方法上:放之前定义
public <T> void test1(T t){}
public static <T> void test2(T t){}
public <T> int test3(T t){ return 0; }
public <T> List<T> test4(){ return null; }
public static <EE> void test5(EE e){}
4-2.泛型定义在类上:如果一个同时用到同一个泛型那么可以把泛型定义到类上 ,可以声明一个或多个
public class StudentDao<T,E>{
public void test(T t){}
public List<T> test2(){ return null; }
注意:静态方法不能使用类定义的泛型,而应单独定义泛型
public static<E> void test3(E e){}
5.关于泛型应用的小案例:
@Test
public void testList(){
List<String> list=new ArrayList<String>(); //List集合的测试
list.add("aaa");
list.add("bbb");
list.add("ccc");
for(int i=0;i<list.size();i++){ //普通for循环
System.out.println(list.get(i));
}
for(String str:list){ //for循环的新特性
System.out.println(str);
}
Iterator<String> it=list.iterator();
while(it.hasNext()){ //while循环
System.out.println(it.next());
}
}
@Test
public void testMap(){
Map map=new HashMap(); //Map集合的测试
map.put(1, "a");
map.put(2, "a");
map.put(3, "a");
map.put(4, 1111);
Set keys=map.keySet();
Iterator it=keys.iterator();
while(it.hasNext()){ // 根据key取值
Integer key=(Integer) it.next();
System.out.println("key:"+key+" value:"+map.get(key));
}
Map<Integer,String> map1=new HashMap<Integer, String>();
map1.put(1, "aaa");
map1.put(2, "bbb");
map1.put(3, "ccc");
//map1.put(4, 1111);
Set<Entry<Integer,String>> entries=map1.entrySet(); //根据map对象取值
for(Entry<Integer,String> entry : entries){
System.out.println("key:"+entry.getKey()+" value:"+entry.getValue()+",");
}
}
分享到:
相关推荐
泛型可以应用于各种数据结构,例如集合框架、映射、队列等。泛型可以帮助程序员编写更加灵活、可维护的代码,提高代码的可读性和可维护性。 泛型的优点: 1. 提高代码的可读性和可维护性 2. 消除强制类型转换,...
本篇文章将深入探讨这两种概念及其在实际应用中的示例。 首先,我们来看枚举。枚举是一种预定义的类,用于创建一组固定数量的常量。在Java中,枚举可以包含方法、变量,并且可以实现接口,使其具有高度的灵活性。...
通过类、对象、继承、多态、接口和抽象类的面向对象特性,配合泛型类、方法、类型参数、约束以及其编译时和运行时的实现原理,C#为开发者提供了一种高效且强大的编程手段,广泛适用于集合、算法、数据结构等应用场景...
文章还深入讨论了泛型在 Map中的应用及其优缺点,最后介绍了一些高级用法,如自定义 Map类和 Lambda表达式与 Map的结合。 适合人群:Java初学者及有一定经验的开发者。 使用场景及目标:帮助读者理解和掌握 Java中...
下面我们将深入探讨SSH框架中泛型的应用及其重要性。 1. **Spring框架中的泛型** - **Bean容器**:Spring的ApplicationContext接口提供了泛型版本的getBean方法,如`ApplicationContext.getBean(Class<T> required...
总结来说,本章练习主要涵盖了Java的类继承、类型引用、泛型及其应用。理解这些概念对于编写健壮且类型安全的Java代码至关重要。通过解决这些问题,开发者能够更好地掌握如何定义和使用类、处理类型引用以及利用泛型...
本文将深入探讨Java泛型的概念、优点、使用方式及其在实际开发中的应用。 **一、泛型的基本概念** 泛型是Java语言中的一种参数化类型,它允许在定义类、接口和方法时使用类型参数,从而实现数据类型的模板化。通过...
下面将详细阐述这两个知识点及其在实际应用中的作用。 首先,我们来了解一下Asp.Net中的泛型。泛型是.NET Framework 2.0引入的一种强大的特性,它允许开发者创建类型参数化的类、接口、方法和集合。这意味着,泛型...
因此,在C# 2.0 及其后续版本中,强烈建议开发者优先使用泛型集合。这不仅可以提高代码的质量和可维护性,还能有效提升应用程序的性能。在实际开发过程中,合理选择合适的集合类型对构建高效稳定的应用系统至关重要...
② 学习泛型的定义、优势及其在实际项目中的应用;③ 了解集合框架的各种类型及其常见操作;④ 结合泛型和 LINQ 提高数据处理的效率和安全性。 阅读建议:本文内容丰富,涉及面广,建议读者逐一阅读各个章节,动手...
当涉及到泛型时,这种继承关系如何应用到泛型类型上呢? - `FujiApple` 是 `Apple` 的子类型; - `Apple` 是 `Fruit` 的子类型; - 因此,`FujiApple` 也是 `Fruit` 的子类型; - 所有的Java类型都是 `Object` 类型...
2. **边界通配符**: 如`<? extends T>`表示可以接受T及其子类的对象,`<? super T>`表示可以接受T及其父类的对象。这在方法参数传递和多态性方面很有用。 3. **泛型方法**: 方法也可以声明泛型,例如`public <T> ...
本篇文章将深入探讨C#泛型的概念、用途及其在实际编程中的应用。 泛型是C# 2.0版本引入的新特性,其主要目标是提高代码的复用性和类型安全性。泛型允许我们在定义类、接口和方法时使用一种或多种类型作为参数,这些...
《C++设计新思维:泛型编程与设计模式之应用》这本书深入探讨了C++语言在泛型编程和设计模式中的应用,对于理解和提升C++编程能力有着重要的指导价值。以下将围绕这些主题展开详细讨论。 一、泛型编程 泛型编程是...
通过阅读和运行这些代码,你可以更好地理解泛型和集合在实际项目中的应用。 总之,Java泛型和集合是提高代码质量和效率的关键工具,理解并熟练掌握它们对于成为一名优秀的Java开发者至关重要。通过深入学习本书和...
Java泛型技术的发展历程及其在JDK1.4中的实现,是IT领域特别是软件开发与设计中的一个重要里程碑。本文将深入探讨泛型技术的概念、历史背景、与其它编程概念的区别,以及其在Java语言中的具体应用。 ### 泛型技术...