尝试从实例化类中的抽象类调用静态方法。这是我尝试做的原始编码示例,但不确定如何去做。
DataSource myDataSource = new DataSource();
DataAdapterTest.initialize(myDataSource);
public abstract class DataAdapterTest extends DataAdapter {
public static void initialize(DataSource d) {
d.addDataAdapter(DataAdapterTest.class);
}
public static void onCreate() {
does something here
}
}
public class DataSource {
public void addDataAdapter(Class<DataAdapter> c) {
c.onCreate();
}
}
答案 0 :(得分:0)
你的问题不清楚。我会回答我猜的问题。
我猜你有以下编译错误:
方法中的addDataAdapter(Class)方法 Main.DataSource不适用于参数 (类)
只需为addDataAdapter()
public void addDataAdapter(Class<? extends DataAdapter> c) {
您似乎试图将静态方法用于多态,这不是一个好主意,因为静态方法是相对于类的。
c.onCreate();
您不能以这种方式直接从类中调用方法,因为c
是Class
对象实例,并且没有这样的方法。
这与调用不同:
DataAdapterTest.onCreate();
您应该传递该类的实例而不是Class
对象,并使用实例方法而不是静态方法。在这方面,很难提供建议,因为我们不知道你想要达到的目的。
Class
参数您评论道:
我需要DataSource才能调用变化的方法 DataAdapter抽象类
您在此处提供的代码仅使用一个扩展DataAdapter
的类。如果你需要几个,那么在你的最小例子中至少放2个。
截至目前,我认为没有必要在这里传授课程。您还可以执行以下操作:
DataSource myDataSource = new DataSource();
DataAdapterTest.initialize(myDataSource);
public abstract class DataAdapterTest extends DataAdapter {
public static void initialize(DataSource d) {
d.addDataAdapter();
}
public static void onCreate() {
//does something here
}
}
public class DataSource {
public void addDataAdapter() {
DataAdapterTest.onCreate();
}
}
如果DataAdapterTest
类中的所有内容都是静态的,那么扩展DataAdapter
的目的是什么?如果没有子类的实例,则不能使用任何继承的东西。