我正在尝试在java中为我的Uni项目创建一个API。
以下是可能的。
我有MyClass
的2个版本,其中一个版本不包含方法体中的代码。
例如:
完整版:
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中是否可行,或者有更好的方法吗?
提前致谢!
答案 0 :(得分:1)
您想要创建一个界面,并让“with code”-version 实现该界面。
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;
}
}
你不能在接口中定义构造函数(并在接口中定义字段是非常规的),所以你可能也想看一下抽象类:
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;
}
}