扩展抽象类的 Java 静态类

标签 java

这可能是一个非常愚蠢的问题,但这是我有兴趣实现的模式。

这是我实现的抽象类的基本版本。

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/

相关文章:

java - 将 JTable 内容保存为文本文件

java - Java 中使用 BigDecimal 的二维数组

java - Camel 端点概述?

java - Proguard 和两个项目使用相同的 android 库。广播。类未找到异常

java - 复制单链表

java - 在java中转换日期以绘制图表

java - 如何使用密码加密的私钥生成 RSA key 对?

java - JFrame 过渡效果 - 当调用 setState(Frame.ICONIFIED) 时,它只是转到任务栏而没有动画

java - 在 J2SE 应用程序中查看 Commons Logging 调试消息

java - 检查正在运行的 JAR Linux 服务的版本