摘要: 這是擦拭法的本意。
實際上BadClass()實例化以后Class里面就不包括T的信息了,對于Class而言T已經被擦拭為Object。而真正的T參數被轉到使用T的方法(或者變量聲明或者其它使用T的地方)里面(如果沒有那就沒有存根,這里指ParameterizedTyp),所以無法反射到T的具體類別,也就無法得到T.class。
而getGenericSuperclass()是Generic繼承的特例,對于這種情況子類會保存父類的Generic參數類型,返回一個ParameterizedType,這時可以獲取到父類的T.class了,這也正是子類確定應該繼承什么T的方法。
我們應該利用這種特性,這對實現模版方法非常有用。 閱讀全文
實際上BadClass
而getGenericSuperclass()是Generic繼承的特例,對于這種情況子類會保存父類的Generic參數類型,返回一個ParameterizedType,這時可以獲取到父類的T.class了,這也正是子類確定應該繼承什么T的方法。
我們應該利用這種特性,這對實現模版方法非常有用。 閱讀全文