java - 创建一个类来扩展 API

标签 java api extend

我正在尝试用 java 为我的 Uni 项目创建一个 API。

以下情况是否可能。

我有 2 个版本的 MyClass,其中一个版本在方法主体中不包含代码。

例如:

完整版本:

public MyClass {
     public String name;

     public MyClass(String name) {
          this.name = name;
     }

     public String getSpecialVersion(){
         return name + name;
     }
}

API版本:

public MyClass {
     public String name;

     public MyClass(String name) {}

     public String getSpecialVersion(){ return null; }
}

用户扩展该类的 API 版本的想法,但该类的完整版本是在运行时加载的。

这在 Java 中可行吗?或者有更好的方法吗?

提前致谢!

最佳答案

您想要创建一个接口(interface)并让“带代码”版本实现该接口(interface)。

public interface IMyClass {

    public String getSpecialVersion();

}

实现:

public class MyClass implements IMyClass {

    public String name;

    public MyClass(String name) {
         this.name = name;
    }

    @Override
    public String getSpecialVersion() {
        return name + name;
    }

}

您无法在接口(interface)中定义构造函数(并且在接口(interface)中定义字段有点非常规),因此您可能也需要查看抽象类:

public abstract class AbstractMyClass {

    public String name;

    public AbstractMyClass(String name) {
         this.name = name;
    }

    public abstract String getSpecialVersion();

}

此类可以通过具体类扩展来添加方法主体:

public class MyClass extends AbstractMyClass {

    public MyClass(String name) {
        super(name);
    }

    @Override
    public String getSpecialVersion() {
        return name + name;
    }

}

关于java - 创建一个类来扩展 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23468349/

相关文章:

Java:两个日期之间的差异(以月为单位)

java - 从特定包Java中读取txt文件

java - 使 Java 报告 IPv6 地址而不是 IPv4

javascript - 将查询参数与集合运算符一起使用

javascript - 如何在使两个变量名成为同一对象的别名与使它们等于两个单独的对象之间进行切换?

java - 如何在 Android Espresso 中的 View 之间导航

python - 使用 Windows 7 64 位 python 3.5.1 和 pytumblr 在 tumblr 上发布图像?

javascript - Facebook XMPP 聊天 API - 设备优先级

javascript - 如何用另一个数组扩展现有的 js 数组?

Java Swing - 为什么 JComponent 不显示?