这可能是一个非常愚蠢的问题,但这是我有兴趣实现的模式。
这是我实现的抽象类的基本版本。
public abstract class MyCollection {
public abstract String baseUrl();
public void get(ResponseHandler handler) {
myApi.get(baseUrl(), handler);
}
}
这是我的基本静态集合对象
public class Users extends MyCollection {
@Override
String baseUrl() {
return "/users";
}
}
这就是我希望能够在我的一个 Controller 中执行的操作
Users.get(new ResponseHandler() {
@Override
public void onSuccess(Object obj) {
//store data
}
@Override
public void onError(Object obj) {
//tell user
}
});
我的问题是 Java 不允许我访问 MyCollection
抽象类中的 get
函数。有没有办法让这种模式发挥作用?对我来说,它看起来非常漂亮和干净。
最佳答案
由于以下原因,您无法调用 Users.get()
:
-- 静态方法不会被继承,即使您的 MyCollection
类包含一个静态 get()
方法(它不包含该方法;它包含一个实例)相反,使用 get()
方法)
-- Users
类中没有静态 get()
方法。
将这两者结合起来应该可以让您更好地了解为什么无法调用该电话。
关于扩展抽象类的 Java 静态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20435134/