繁体   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