如何初始化变量以接受任何给定的 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 {
...
}
我正在设计一个 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 {
...
}