簡體   English   中英

從泛型類java調用靜態方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM