JAVA泛型多态

先度娘一下多态的概念:

多态==晚绑定

  不要把函数重载理解为多态。

  因为多态是一种运行期的行为,不是编译期的行为。

  多态:父类型的引用可以指向子类型的对象。

  比如 Parent p = new Child();

    当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;

    如果有,再去调用子类的该同名方法。

(来源:http://www.cnblogs.com/mengdd/archive/2012/12/25/2832288.html)

那如果要在Java中泛型做多态如何使用呢

public class ObjectProxy implements IObject

/**
* 根据类型设置属性值
*/
public <T> T getTypeValue(Object object, Class<T> typeClass) {}

这样可以在普通JAVA类中,实现多态

JAVA泛型多态

时间: 2024-12-25 04:08:47

JAVA泛型多态的相关文章

C++泛型 &amp;&amp; Java泛型实现机制

C++泛型 C++泛型跟虚函数的运行时多态机制不同,泛型支持的静态多态,当类型信息可得的时候,利用编译期多态能够获得最大的效率和灵活性.当具体的类型信息不可得,就必须诉诸运行期多态了,即虚函数支持的动态多态. 对于C++泛型,每个实际类型都已被指明的泛型都会有独立的编码产生,也就是说list<int>和list<string>生成的是不同的代码,编译程序会在此时确保类型安全性.由于知道对象确切的类型,所以编译器进行代码生成的时候就不用运用RTTI,这使得泛型效率跟手动编码一样高.

java泛型(二)、泛型的内部原理:类型擦除以及类型擦除带来的问题

java泛型(二).泛型的内部原理:类型擦除以及类型擦除带来的问题 参考:java核心技术 一.Java泛型的实现方法:类型擦除 前面已经说了,Java的泛型是伪泛型.为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉.正确理解泛型概念的首要前提是理解类型擦出(type erasure). Java中的泛型基本上都是在编译器这个层次来实现的.在生成的Java字节码中是不包含泛型中的类型信息的.使用泛型的时候加上的类型参数,会在编译器在编译的时候去掉.这个过程就称为类型

Java泛型读书笔记 (二)

关于Java泛型擦除后,继承一个泛型类带来的问题 有如下泛型类Pair: public class Pair<T> { private T second; private T first; public Pair() { first = null; second = null; } public Pair(T first, T second) { this.first = first; this.second =second; } public T getFirst() { return fi

Java 泛型(Generics) 综述

一. 引子 一般的类和方法,只能使用具体类型:要么是基本类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大. 多态算是一种泛化机制,但对代码的约束还是太强(要么继承父类,要么实现接口). 有许多原因促成了泛型的出现,而最引人注目的一个原因,就是为了创造容器类.(泛型的主要目的之一就是用来指定容器要持有什么类型的对象,而且由编译器来保证类型的正确性) 例如,在 Java 实现加入泛型前,ArrayList 只维护一个 Object 类型的数组: publ

面向对象,Java泛型篇

一.Java泛型入门基础 1. 泛型历史:集合中可以存储任意类型对象,但是在取出时,如果要使用具体对象的特有方法时,需要进行向下转型,如果存储的对象类型不一致,在转型过程中就会出现ClassCastException异常.这样就给程序带来了不安全性. 在jdk1.5以后就有了解决方案--泛型技术:在存储元素时,就不允许存储不同类型的元素.存储了就编译失败. 所以就需要在存储元素时,在容器上明确具体的元素类型,这其实和数组定义很像. 2.优势:1)将运行时期的ClassCastException异

java反射+java泛型,封装BaseDaoUtil类。供应多个不同Dao使用

当项目是ssh框架时,每一个Action会对应一个Service和一个Dao.但是所有的Ation对应的Dao中的方法是相同的,只是要查的表不一样.由于封装的思想,为了提高代码的重用性.可以使用java中的泛型+反射去实现最终的封装,将所有的Dao层的共同部分写一个BaseDaoUtil.而所有的Dao都继承这个类. 思路: ----->(1)反射+泛型 ----->(2)当生成子类对象(UserDao),调用空构造时(new UserDao()),子类的空构造会默认调用父类的空构造器(new

你真的懂Java泛型吗

泛型实现参数化类型的概念,使代码可以应用于多种类型,解除类或方法与所使用的类型之间的约束.在JDK 1.5开始引入了泛型,但Java实现泛型的方式与C++或C#差异很大.在平常写代码用到泛型时,仿佛一切都来得如此理所当然.但其实Java泛型还是有挺多tricky的东西的,编译器在背后为我们做了很多事.下面我们来看看有关Java泛型容易忽视的点. 泛型不支持协变 什么是协变?举个例子. class Fruit{} class Apple extends Fruit{} Fruit[] fruit

Java:泛型基础

泛型 引入泛型 传统编写的限制: 在Java中一般的类和方法,只能使用具体的类型,要么是基本数据类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制就会束缚很多! 解决这种限制的三种方法: 1.多态:将方法的参数类型设为基类,那么该方法就可以接收从这个基类导出的任何类作为参数. class Primary{} //定义基类 class Test() { public void f(Primary p) {...} } 2.方法的参数使用接口:任何实现了该接口的类都可以满足该

Richard Warburton与Raoul-Gabriel Urma在Devoxx UK 2015上回顾Java泛型历史

本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/06/angular-2-react-native-roadmap Richard与Raoul向广大开发者提供关于Java 8的培训课程.近日,二人在Devoxx UK 2015上共同进行了一场演讲,回顾了Java泛型的起源与动机.介绍了目前一些不为人知的特性,同时对Java 10进行了展望.该演讲由3个精彩的部分构成:泛型的过去.现在与未来. 过去 正如Richard与Ra