【问题标题】:Making a Method common for different versions of same class使同一类的不同版本通用的方法
【发布时间】:2016-10-15 11:52:29
【问题描述】:

我正在从 XSD 生成类。对于 XSD 中的每个修订版,都会生成一个具有相同名称但在不同包下的新类。如果“Foo”是类,则类名将是:model.v1.Foomodel.v2.Foo 等。来自每个修订版。

无论类的版本如何,一些操作都是常见的。有没有办法创建一个通用方法,可以占用任何版本的 Foo

public static String doOperation(Foo foo){
    //Do some operation
}

DoOperation 方法需要对所有版本通用。

【问题讨论】:

  • 你正在将版本添加到包名中?为什么?
  • 这就是它已经存在的方式,我无法改变它。所有版本仍在使用中,必须支持。
  • 所有Foo 版本都可以实现接口吗?或者是子类(扩展)一个类?
  • @c0der 不,这些类已经生成并提供给我们。
  • 所有Foo 版本都有一个共同的超类吗?你能扩展Foo 并使用它的子类吗?

标签: java


【解决方案1】:

一种可能性是创建一个类似的界面:

public interface FooIF {

    public default String doOperation(Foo foo){

        System.out.println("doOperation executed");

        return null;
    }
}

并让Foo 实现它:

public class Foo implements FooIF{

    public Foo() {

    }

    public static void main( String[] args) {

        Foo f = new Foo();
        f.doOperation(null);
    }
}

【讨论】:

  • 它们是使用 maven 插件从 XSD 自动生成的类,我无法修改它们。
猜你喜欢
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多