如何初始化变量以接受任何给定的 class

How to initialize a variable to accept any given class

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

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

您可以为此使用通用 class:

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());
...

您可以在所需对象上实现接口,而不是客户 class,在您的响应中使用此特定接口:

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

然后在您的界面中,您可以为所有 classes 中必须具有的方法签名,这些方法实现了这个:

public interface ResponseObject {
    ...
}

然后你 Customer 也是一个 ResponseObject

public class Customer implements ResponseObject {
    ...
}