我正在尝试用 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/