[英]Calling static method from Generic class java
我想調用繼承的泛型類的靜態方法,請參見下面的java代碼。 我該如何實現?
public class DataLoader<T extends SuperObject> extends AsyncTask<Void, Void, Void> {
@Override
protected void doInBackground(Void... params) {
//here I want to call static method get() of T
}
}
public abstract class SuperObject {
}
public class SomeObject extends SuperObject {
public static String get() {
return "string";
}
}
方法get()
將在擴展SuperObject類的每個類中
不幸的是,您不能直接在類DataLoader的類型參數T上調用方法。 我建議以下可能的解決方案:
將T的實例傳遞給方法doInBackground()並對其調用方法。 例如
public void doInBackground(T t, Void... params) { t.get(); }
如果在超類中聲明了方法,則以靜態方式直接調用該方法:SuperObject.staticMethodName(...)
我沒改變你的課。 這是您可以實現的方法。
public class DataLoader<T extends SuperObject> extends AsyncTask<Void, Void, Void> {
@Override
protected void doInBackground(Void... params) {
T.get();
}
}
public abstract class SuperObject {
public static String get() {
return "string";
}
}
public class SomeObject extends SuperObject {
}
由於SuperObject是父類,因此應該在其中包含一個靜態方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.