public static void main(String[] args) {
GenericTest genericTest = new GenericTest();
genericTest.setValue(new BigDecimal("10"),BigDecimal.class);
genericTest.setValue(new Date(0), Date.class);
}
public <T> void setValue(T element, Class<T> dataType)
{
if(dataType == Date.class){
checkDate((Date)element);
}
else if(dataType == BigDecimal.class){
checkBigDecimal((BigDecimal)element);
}
}
public void checkDate(Date localDate)
{
System.out.println("This is Date metho, Caller has casted T to Date");
}
public void checkBigDecimal(BigDecimal localBigDecimal)
{
System.out.println("This is BigDecimal method, Caller has casted T to BigDecimal");
}
在這裏,當調用checkDate和CheckBigDecimal方法時,我分別將類型轉換爲Date和BigDecimal。調用這些方法時是否可以避免類型轉換?有沒有什麼辦法可以避免使用泛型參數調用方法時的類型轉換?
你實際上實現了一個橋接方法 - 編譯器在處理類型參數時在幕後執行的方法。 :) –
你不需要'dataType'參數。你可以從'element.getClass()'中獲得它。我懷疑'setValue()'方法應該是通用的:相反,您應該提供所有必需的重載。 – EJP
@Tom,這是我的錯誤,但我不希望別人專注於這個程序的每一行。我只是把原型,以得到我的答案..again謝謝你.. – 027