我最近正在研究一些Android代碼(這應該是一個普通的Java問題 - 赦免雙關語 - 關於泛型和Java自動解析類型)。Java/Android自動解析泛型類型。要求瞭解分步指導以瞭解
這裏是我的代碼(基於Android的,但請創建一個Java特定版本如果需要)
class ViewFinder<T extends View> {
@SuppressWarnings("unchecked")
final static <T> T byId(View view, int resource) {
return (T) view.findViewById(resource);
}
}
這裏是有趣的位...
// Convert XML UI component definitions into the static View Holder object
// Here is what we normally have to do for Android to convert the XML into a UI component
holder.txtGroupName = (TextView) row.findViewById(R.id.txtGroupName);
// This is what I can do with my ViewFinder class above!
holder.txtGroupName = ViewFinder.byId(row, R.id.txtGroupName);
// This is what I was EXPECTING to do with my ViewFinder class above!
holder.txtGroupName = ViewFinder<TextView>.byId(row, R.id.txtGroupName);
不知道Java(而不是Android)正在解決通用T類型爲TextView UI組件,但爲什麼和* 如何 *?
我可以爲這裏發生的事情得到一個「播放」嗎?我希望能夠在下次編碼之前弄清楚這是否會發生。
您正在使用什麼版本的Java? – cYrixmorten
是的,我正在使用Java 7.但我仍然有點困惑。鑑於'ViewFinder'是'byId(...)'方法。這個怎麼用?我用調試器進行了檢查,但沒有足夠的細節來查看細節。我知道它是'Type Inference',但我想知道它是如何在非常好的水平上工作的 –