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]));//讓某動物吃飯,後面跟的是方法傳的參數可以不寫
}
}