通过API发送抽象类

时间:2013-06-06 14:48:48

标签: java google-app-engine google-cloud-endpoints

我目前正在尝试发送类似的内容。云端点:

public abstract class Transaction {
//...
}

public class BuyTransaction extends Transaction {
//...
}

public class UpgradeTransaction extends Transaction {
//...
}

我的API方法类似于

@ApiMethod(...)
public List<Transaction> getTransactions(User user) { /*...*/}

但生成的Endpoint-Libs只包含一个Transaction-model但忽略其他类。当我尝试这个:

List<? extends Transactions> 

端点-lib-generation完全失败,并表示它不受支持。有没有其他方法可以通过线路发送从抽象类继承的不同类?

1 个答案:

答案 0 :(得分:2)

我不这么认为。您尝试解决的一般问题并不总是有可行的解决方案,因为您需要结合Transaction的所有属性和任何扩展类。考虑这些类:

public abstract class Foo {
  //...
}

public class Bar extends Foo {
  public String prop;

  // getters and setters
}

public class Baz extends Foo {
  public Integer prop;

  // getters and setters
}

Foo在客户端代表的类集合是否应包含propString的{​​{1}}字段?

如果您希望允许通过网络发送任何延伸Integer的内容,您必须提供要作为Foo的一部分发送的所有属性。