创建一个扩展API的类

时间:2014-05-05 08:45:09

标签: java api extend

我正在尝试在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中是否可行,或者有更好的方法吗?

提前致谢!

1 个答案:

答案 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;
    }

}