java 的反射机制与泛型
先不要看标题,觉得很高大上,其实我有我的理解。
通俗点,举个例子:比如有一个食堂,专门生产食物的,按照正常的道理,我们人类可以去吃饭,狗类也可以,猫类也可以去吃饭的。但是如果没有反射与泛型,会怎样? 我们必须给人类造一个食堂,给狗类造一个食堂,给猫类造一个食堂等等。。。。等到我们造完,估计可爱的小猫咪已经饿死了吧哈哈~~~~ 但是其实吃饭这件事是很简单的,我们何不共用一个食堂呢?于是就有了泛型,你们谁都可以来吃饭的。但是问题又来了,
人有筷子吃饭,狗用狗盆,猫用盘子,咋办?我们需要它们每个类型的吃饭方法呀~,于是我们就可以用反射机制,调用它们方法,知道每一个类型的方法,然后大家就和睦共存了哈哈哈
private class 人类食堂
{
public String getString (people p)
{
return p.getEat();
}
}
private class 狗类食堂
{
public String getString (Dog d)
{
return d.getPengzi();
}
}
private class 猫类食堂
{
public String getString (Cat c)
{
return c.getPanzi();
}
}
以上就是平时写的方法。
下面是关键
private Class<T> 动物大食堂
{
//Class<T>(某类型的class),扔过来的实例化对象,获取方法
public String Eat (Class<T> clazz,T 某动物,String 吃饭方法名)
{
//getMethod第一个参数是方法名
Method method = clazz.getMethod(吃饭方法名);//获取方法
return method.invoke(某动物,new Object[0]));//让某动物吃饭,后面跟的是方法传的参数可以不写
}
}