1.背景介绍 在实现SSH框架中,DAO层向数据库持久化的过程中,因为大部分保存对象的方法都会调用到sava():所有索性就把save delete update select 方法进行封装到父类中,这时候就遇到了个问题,子类在调用这些方法的时候,需要根据子类的类型获知子类Class类型:这个时候可以通过传入泛型,根据泛型的类型来获取子类的Class类型:  2.实现代码范例 父类:public abstract class Parents<E> { private Class<?>…
最近看开源代码,看到里面很多Java泛型,并且通过反射去获取泛型信息.如果说要看懂泛型代码,那还是比较容易,但是如果要自己利用泛型写成漂亮巧妙的框架,那必须对泛型有足够的了解.所以这两三天就不在不断地看Java泛型相关的东西.如果说想要明白通过反射去获取泛型信息,那么Type体系是必须要了解的.Java从1.5开始引入泛型,并且也引入了Type体系.首先给出Type的类型树UML图,以便有个整体的认识. 这些都在java的reflect包下面,图中带有s的接口返回的是数组,由于画图工具的原因,标…
C++中的虚函数的作用主要是实现了多态的机制.关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数.这种技术可以让父类的指针有“多种形态”,这是一种泛型技术.所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法.比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议. 虚函数表    对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的…
泛型,一个孤独的守门者. 大家可能会有疑问,我为什么叫做泛型是一个守门者.这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇.泛型是 Java 中一个很小巧的概念,但同时也是一个很容易让人迷惑的知识点,它让人迷惑的地方在于它的许多表现有点违反直觉. 文章开始的地方,先给大家奉上一道经典的测试题. List<String> l1 = new ArrayList<String>(); List<Integer> l2 = new Array…
看下面例子: #include "stdafx.h" #include <iostream> class A {  //父类 public: void  f()   //普通函数 { std::cout<<"A"<<std::endl; } void virtual vf()   //虚函数 { std::cout<<"virtual-A"<<std::endl;  } }; class…
当父类的对象引用没有指向父类的对象,而是指向了子类的对象时,调用方法或访问变量时会怎样呢? 假设父类为Person,子类为Student,有下面的两行定义: Student sTest = new Student(); Person pTest = sTest; 其中,pTest就是父类的对象引用,sTest是子类的对象引用:pTest和sTest都指向了一个子类对象.那么, (1).如果子类的成员变量与父类的成员变量的类型及名称都相同,则用sTest访问时,访问到的是子类的成员变量:用pTes…
package test; public class Car { private int carMoney; //汽车租金 private String carName; //汽车名字 private int carNumb; //汽车序列号 private int carryNum; //载货量 private int passengerNum;//载客人数 public Car(int carNumb,String carName,int carMoney,int passengerNum,…
这一章节我们继续类型擦除的话题,我们将通过对照数组与泛型容器,观察类型擦除给泛型容器带来什么问题? 1.数组 package com.ray.ch13; public class Test { public static void main(String[] args) { Fruit[] fruits = new Apple[5]; fruits[0] = new Apple(); fruits[1] = new Fuji(); fruits[2] = new Fruit(); } } cla…
首先自定义三个类 package reflection1; public interface MtInterface { void info(); } package reflection1; import java.io.Serializable; public class Creature<T> implements Serializable { private char gender; public double weight; private void breath() { Syste…
父类div高度适应子类div 通常有许多div的高度由子类的高度决定父类的高度,所以需要父类div要适应子类div的高度,一般情况父类的高度可以直接设置成“auto”即可. 在有的情况下,子类div会撑破父类div. 所以需要走一些调整.通常有3种方法对高度进行调整: 方法一:直接设置父类高度(不过通常不适用) 方法二:清除浮动属性 方法三: ----------------------------- 个人经常忘记浮动属性,导致排版出现问题.所以喜欢将 内部有浮动属性的div添加一个border…