我不知道如何給這個更好的標題,因爲我真的不知道這種模式在Java中被稱爲什麼。Java中的通用方法
現在我有這個簽名的方法:
public Directory getDirectory(Class<? extends Directory> type) { ... }
你這樣稱呼它:
MyDirectory directory = (MyDirectory)getDirectory(MyDirectory.class);
該類型的約束確保MyDirectory
必須從Directory
派生。
我真正想要做的就是避免轉換並減少所需的代碼量。在C#中你可以說:
MyDirectory directory = getDirectory<MyDirectory>();
有沒有辦法做到這一點或類似的Java?自1.4版以來我沒有編寫任何Java代碼!
由於擦除,這是最好的選擇。 – pickypg 2011-04-27 15:15:48
非常感謝。我正是減去自己是在'T'作爲返回類型,我想通了牙套返回類型,它們實際上只是一個約束呢? – 2011-04-27 15:16:00
@Drew:「」爲泛型方法定義了類型參數「T」 od ...即使你沒有給出特定的邊界(比如'extends Directory'),你也必須爲任何泛型方法聲明該聲明。 –
ColinD
2011-04-27 15:18:14