我想调用继承泛型类的静态方法,请看下面的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类
答案 0 :(得分:1)
不幸的是,您无法直接调用类DataLoader的类型参数 T 上的方法。 我建议以下可能的解决方案变体:
将 T 的实例传递给方法doInBackground()并调用方法。 例如
public void doInBackground(T t, Void... params) {
t.get();
}
如果在超类中声明,则直接在超类上以静态方式调用方法:SuperObject.staticMethodName(...)
答案 1 :(得分:-1)
我几乎没有改变你的课程。以下是如何实现这一目标。
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是一个父类,所以静态方法应该在其中。