在Java中更改对象参数的值
我在每个Rest服务上都会重复这样一个代码:在Java中更改对象参数的值,java,parameter-passing,Java,Parameter Passing,我在每个Rest服务上都会重复这样一个代码: user = getUserByToken(request.getToken()); if (user == null) { response = this.buidResponse(Response.status(Status.UNAUTHORIZED)); }else{ do things... } return response; 我想创建一个方法来避免重复前4行,例如: bool validateUser(String t
user = getUserByToken(request.getToken());
if (user == null) {
response = this.buidResponse(Response.status(Status.UNAUTHORIZED));
}else{
do things...
}
return response;
我想创建一个方法来避免重复前4行,例如:
bool validateUser(String token, User userOut, Response responseOut){
userOut = getUserByToken(token);
if (userOut == null) {
responseOut = this.buidResponse(Response.status(Status.UNAUTHORIZED));
return false;
}
return true;
}
但在Java中,参数是通过value ref传递的,因此参数不会在方法之外保持其值
我还有什么选择 您可以创建一个包装类MyDTO,并将参数保留为字段。 请参阅以下代码:
class MyDTO{
String token;
User userOut;
Response responseOut;
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public String getUserOut() {
return userOut;
}
public void setUserOut(String userOut) {
this.userOut = userOut;
}
public Response getResponseOut() {
return responseOut;
}
public void setResponseOut(Response responseOut) {
this.responseOut = responseOut;
}
}
bool validateUser(MyDTO dto){
dto.setUserOut(getUserByToken(dto.getToken()));
if (dto.getUserOut() == null) {
dto.setResponseOut(this.buidResponse(Response.status(Status.UNAUTHORIZED)));
return false;
}
return true;
}
与所有方法参数一样,
responseOut
是一个局部变量。Java没有out参数的概念,最简单的方法是传递一个容器(比如数组)作为参数,并修改容器的内容。但是在这种情况下,您可以从方法返回响应,而不是布尔值。我想到了这个选项,但由于我需要在方法的其他部分同时使用User和response,我认为这个选项不会使代码更干净/更快。无论如何,谢谢你,因为这是一个有效的方法