Wil*_*man 4 java code-duplication
我有两种方法都可以从Arraylist中获取用户对象.
public User getUser(int userID) {
ListIterator<User> listIterator = listOfLoggedInUsers.listIterator();
User user;
while(listIterator.hasNext()) {
user = listIterator.next();
if (user.getID() == userID) {
return user;
}
}
return null;
}
public User getUser(String username) {
ListIterator<User> listIterator = listOfLoggedInUsers.listIterator();
User user;
while(listIterator.hasNext()) {
user = listIterator.next();
if (user.getUsername().equals(username)) {
return user;
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
由于方法只在if语句中有所不同,如何减少代码重复?例如,可以在参数中发送表达式/动态布尔值吗?
您可以创建一个接受谓词并返回第一个匹配元素的公共方法:
private User getUser(Predicate<User> predicate) {
return listOfLoggedInUsers.stream()
.filter(predicate)
.findFirst()
.orElse(null);
}
public User getUser(int userID) {
return getUser(user -> user.getID() == userID);
}
public User getUser(String username) {
return getUser(user -> user.getUsername().equals(username));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49 次 |
| 最近记录: |