public class ShiftPatternDTO{
private boolean monday;
private boolean tuesday;
private boolean wednesday;
private boolean thursday;
private boolean friday;
private boolean saturday;
private boolean sunday;
public boolean isMonday() {
return monday;
}
public boolean isTuesday() {
return tuesday;
}
public boolean isWednesday() {
return wednesday;
}
public boolean isThursday() {
return thursday;
}
public boolean isFriday() {
return friday;
}
public boolean isSaturday() {
return saturday;
}
public boolean isSunday() {
return sunday;
}
}
public enum WeekDay {
MONDAY("Monday", 1),
TUESDAY("Tuesday", 2),
WEDNESDAY("Wednesday", 3),
THURSDAY("Thursday", 4),
FRIDAY("Friday", 5),
SATURDAY("Saturday", 6),
SUNDAY("Sunday", 7);
}
private Set<WeekDay> getWeekPattern(ShiftPatternDTO shiftPattern) {
Set<WeekDay> weekPatterns = new LinkedHashSet<>();
if (shiftPattern.isMonday()) {
weekPatterns.add(WeekDay.MONDAY);
}
if (shiftPattern.isTuesday()) {
weekPatterns.add(WeekDay.TUESDAY);
}
if (shiftPattern.isWednesday()) {
weekPatterns.add(WeekDay.WEDNESDAY);
}
if (shiftPattern.isThursday()) {
weekPatterns.add(WeekDay.THURSDAY);
}
if (shiftPattern.isFriday()) {
weekPatterns.add(WeekDay.FRIDAY);
}
if (shiftPattern.isSaturday()) {
weekPatterns.add(WeekDay.SATURDAY);
}
if (shiftPattern.isSunday()) {
weekPatterns.add(WeekDay.SUNDAY);
}
return weekPatterns;
}
條件上面的代碼是用Java 7中我試圖重構這個到Java 8.使用可選實用度過了一段時間,但沒有能夠得出一個書面解決這個問題,請問有人可以幫忙嗎?我不想看到一系列如果條件我的代碼,這是我想要刪除。如何簡化鏈接,如果使用Java 8
我已經給出了我的代碼的基本骨架結構。請注意,問題是非常具體的Java 8,所以一個簡單的答案說不,你需要按照在這個論壇建議的其他選項將被接受
你或許應該使用'EnumSet',而不是'LinkedHashSet'。但是,您認爲Java 8應該如何處理這個問題呢? – RealSkeptic
@RealSkeptic很好,你可以使用像'(ShiftPatternDTO :: isMonday,WeekDay.MONDAY)'這樣的地圖做一個地圖,然後迭代地圖條目。 –