`

浅谈泛型

 
阅读更多

泛型的应用很广泛,其实最简单的,基本上所有集合类型都有使用,可以点击进入List、Map、Set等实现类中看看其运用:

<? extends T>和<? super T>,以及<?>的区别:

上限:<? extends T> 只能使用T类型或者T类型的子类对象。

下限:<? super T> 只能使用T类型或者T的父类及接口实例对象。

全部:<?>可以是任意类型的实例对象。

列举个例子:

比如:

 

List<A> list1 =new ArrayList<A>();
List<B> list2 =new ArrayList<B>();
List<C> list3 =new ArrayList<C>();
List<? extends A> listF;
listF = list1;
listF = list2;
// listF = list3;// 出错
// listF.add(new A());// 出错,指集合内元素类型是A的子类但其本身不是类,所以对象为模糊类型没法实体化。

 

 除此之外,还可以:

    public <T> T get(Object key, Class<T> type) {
        Object ob = map.get(key);
        return (T) ob;
    }

 

	public static <T> PageResult<T> getPageResult(PageInfo<T> pageInfo) {
		PageResult<T> result = new PageResult<T>();
		result.setRecordList(pageInfo.getList());
		result.setPageIndex(pageInfo.getPageNum());
		result.setPageSize(pageInfo.getPageSize());
		result.setPageCount(pageInfo.getPageNum());
		result.setTotal(pageInfo.getTotal());
		return result;
	}

 

	public static void main(String[] args) throws IOException {
		// 适用于知道目标对象的情况,参数一般是序列化的字节数组byte[]
		A a =  parse(1);
		B b =  parse(2);
	}
	private static <T> T parse(Integer a) {
		T b = (T)a;
		if(a == 1) {
			b = (T)new A();
		}else {
			b = (T)new B();
		}
		return b; 
	}
	
	static class A{}
	static class B{}

 

分享到:
评论

相关推荐

    浅谈c# 泛型类的应用

    C#中的泛型类是编程中的一个重要概念,它允许我们创建可以处理多种数据类型的类,提高了代码的重用性和效率。下面将详细讲解泛型类的各个方面。 1. **泛型类的基本应用** 泛型类的核心在于类型参数,这使得类能够...

    浅谈C#泛型的用处与特点

    泛型是 2.0 版 C# 语言和公共语言运行库 (CLR) 中的一个新功能。泛型将类型参数的概念引入 .NET Framework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例...

    浅谈java泛型的作用及其基本概念

    Java泛型是JDK5.0引入的一项重要特性,它为集合框架和其他容器类提供了类型安全,提高了代码的可读性和可重用性。本文将深入探讨Java泛型的作用及其基本概念。 首先,泛型的基本概念是允许在定义类、接口和方法时...

    浅谈Java泛型让声明方法返回子类型的方法

    Java泛型是Java编程语言中的一个强大特性,它允许在代码中使用类型参数,从而提高了代码的重用性和安全性。在处理集合时,泛型能够确保集合中的元素都是同一种类型,避免了运行时的类型转换。在某些情况下,泛型还...

    浅谈java中定义泛型类和定义泛型方法的写法

    在Java编程语言中,泛型是一种强大的特性,它允许我们在编写代码时指定类型参数,从而提高了代码的灵活性和可重用性。本文将深入探讨如何在Java中定义泛型类和泛型方法。 首先,我们来看一下泛型方法的定义。在Java...

    浅谈Java泛型通配符解决了泛型的许多诟病(如不能重载)

    Java泛型是自JDK 1.5版本引入的一个强大特性,它允许在类、接口和方法中使用类型参数,从而增强了代码的类型安全性。然而,泛型在引入时也带来了一些问题,其中之一就是不能直接重载泛型方法。本文将深入探讨Java...

    浅谈C#2.0泛型中的变化:default关键字

    在C#编程语言中,泛型是一种强大的工具,它允许我们编写可重用的类型安全的代码,同时保持代码的灵活性。C#2.0引入了泛型,随着时间的推移,C#对泛型的支持也在不断改进。本文将重点讨论在C#2.0泛型中`default`...

    浅谈三分钟学习Java泛型中T、E、K、V、?的含义

    Java 泛型详解 Java 泛型是 Java SE 1.5 中引入的一项新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型...

    浅谈MyBatis通用Mapper实现原理

    浅谈MyBatis通用Mapper实现原理 MyBatis通用Mapper是MyBatis框架中的一种通用Mapper实现方式,主要提供了一些通用的方法,这些方法是以接口的形式提供的。通用Mapper的实现原理主要是通过Java反射机制和MyBatis框架...

    浅谈Java模型以外的类型策略

    泛型提供了一种在编译时处理类型的方式,而反射允许在运行时检查和操作类的结构,动态代理则能实现接口的动态实现,这些技术可以帮助开发者在保持类型安全的同时,增加代码的灵活性和适应性。 总的来说,选择静态...

    java之浅谈深说--教你如何成长

    ### Java之浅谈深说——教你如何成长为Java编程高手 在IT行业中,Java作为一种广泛使用的编程语言,其重要性不言而喻。对于希望成为Java编程高手的学习者来说,掌握正确的学习路径至关重要。本文将根据提供的标题、...

    浅谈Spring自定义注解从入门到精通

    浅谈Spring自定义注解从入门到精通 在业务开发过程中,我们经常会遇到形形色色的注解,但是框架自有的注解并不是总能满足复杂的业务需求。这时,我们可以自定义注解来满足我们的需求。根据注解使用的位置,文章将...

    【ASP.NET编程知识】浅谈.NET反射机制的性能优化 附实例下载.docx

    文档中提到了几种不同的调用方式:Generic Call(泛型调用)、Reflection(反射调用)、dynamic(动态调用)、Func(委托)以及Delegate(显式委托)。通过对比Debug和Release模式下的性能数据,我们可以得出以下...

    浅谈Java web中基于Hashtable的数据库操作.zip

    - **无泛型支持**:Hashtable属于旧版集合框架,不支持泛型,这意味着在使用时需要进行类型转换,容易引发ClassCastException。 - **不支持迭代器**:与HashMap等新集合框架相比,Hashtable不支持foreach循环,使用...

    Java基础之浅谈集合.doc

    2. 数据类型:数组可以存储相同类型的元素,而集合可以存储不同类型的元素(通过泛型约束)。 3. 重复性:数组中的元素可以重复,而集合中的元素根据实现的不同,可能是唯一不重复的。 ### 1.7 集合操作性能考量 在...

    浅谈Mybatis通用Mapper使用方法

    浅谈Mybatis通用Mapper使用方法 Mybatis通用Mapper是Mybatis框架中的一种插件,主要用于简化数据库操作的编写。它提供了许多实用的方法,例如单表的增删改查操作等。下面将详细介绍Mybatis通用Mapper的使用方法。 ...

Global site tag (gtag.js) - Google Analytics