【问题标题】:How to initialize a variable to accept any given class如何初始化变量以接受任何给定的类
【发布时间】:2018-04-28 21:26:59
【问题描述】:

我正在设计一个 jax-rs 应用程序。我需要对每个 api 调用都有一个共同的响应对象。这是它的模型。应该修改 UserObject 变量以接受我使用 get/set'ers 设置的任何类。目前它只能接受 Customer 类。我需要这个变量才能接受 Customer,Address,Employee .....(我传递的任何东西)。我该怎么做?

public class CustomResponse {
    private Customer UserObject;
    private String Attributes;
    private String Tags;
    ....
}

【问题讨论】:

  • 好吧,你要么必须创建一个接口或抽象基类,然后从它们派生。
  • 试过但需要另一种方法

标签: java jax-rs servlet-3.0


【解决方案1】:

您可以为此使用泛型类:

public class CustomResponse<T> {
    private T userObject;
    private String Attributes;
    private String Tags;

    //a setter...
    public void setUserObject(T object) {this.userObject = object;}
    public T getUserObject() {return this.userObject;}
}

具体的对象类型可以构造为:

CustomResponse<Customer> customerResponse = new CustomResponse<Customer>();
customerResponse.setUserObject(new Customer());
...

在不同的资源方法中:

CustomResponse<Address> customerResponse = new CustomResponse<Address>();
customerResponse.setUserObject(new Address());
...

【讨论】:

    【解决方案2】:

    你可以在你想要的对象上实现接口,而不是 Customer 类,在你的响应中使用这个特定的接口:

    public class CustomResponse {
        private ResponseObject responseObject;
        private String Attributes;
        private String Tags;
        ...
    }
    

    然后在您的界面中,您可以为实现此功能的所有类中必须具有的方法签名:

    public interface ResponseObject {
        ...
    }
    

    然后你的客户也是一个响应对象

    public class Customer implements ResponseObject {
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 2016-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多