请考虑以下代码:
public class UserJMXBeanImpl implements UserJMXBean {
private List<User> userList = new ArrayList<>();
public void addUser(User user){
userList.add(user);
}
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
}
此代码的get方法提供此值:
我只需要使用角色和userID值,并将其用于我的操作。当我将get方法的返回类型更改为return userList.get(0).getUserId()
时,我的返回类型会发生变化。
我该怎么做?
答案 0 :(得分:0)
public List<String> extractUserFields(User user){
List<String> fields = new List<String>();
fields.add(user.getId());
fields.add(user.getRole());
return fields;
}
或者可以将userList作为方法的参数并从中提取所需的用户。
编辑:另一个建议。你试图这样做的方式是另一个原因是错误的。永远记住要保持方法的名称与它应该做的事情一致。您希望getList方法返回第一个元素的ID和roles字段。这是错误的,因为方法名称,当您与其他人一起编码或者您将在几个月内检查自己的代码时,将导致理解错误。想象一下像这样的方法,并想一想这种做法有多害:
public String getBombLocation(Bomb bomb){
bomb.explode();
return "BOOM!";
}
答案 1 :(得分:0)
至少有4个选项:
a)从代码中访问UserJMXBean:
String searchName="Hubert";
String searchRole="Admin";
UserJMXBean bean = new UserJMXBeanImpl();
for(User user : bean.getUserList()){
if(user.getName().equals(searchName) && user.getRole().equals(searchRole)){
//do something with your user
String userID = user.getID();
}
}
b)向UserJMXBeanImpl和UserJMXImplBean添加一个新方法并返回用户实例:
public User findUser(String name, String role){
for(User user : this.getUserList()){
if(user.getName().equals(name) && user.getRole().equals(role)){
return user;
}
}
return null;
}
c)向UserJMXBeanImpl和UserJMXImplBean添加一个新方法并返回所需的属性:
public String[] getUserAttributes(String name, String role){
for(User user : this.getUserList()){
if(user.getName().equals(name) && user.getRole().equals(role)){
return new String[]{user.getID(),
user.getRole(),
user.getEmail()}
}
}
return null;
}
d)您可以重载现有方法并返回size-1-list:
public List<User> getUserList(String name, String role) {
for(User user : this.getUserList()){
if(user.getName().equals(name) && user.getRole().equals(role)){
List<User> list = new ArrayList<>(1);
list.add(user);
return list;
}
}
return Collections.emptyList();
}