私は最近、いくつかのAndroidコードに取り組んでいました(これは、ジェネリックと型のJava自動解決に関する一般的なJavaの質問です-しゃれを許してください)。
これが私のコードです(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 ではない) が Generic T 型を TextView UI コンポーネントに解決していることは知っていますが、なぜ、どのように* ?
ここで何が起こっているかの「実況」を入手できますか? 次回何かをコーディングする前に、これが起こるかどうかを把握できるようにしたい.