Несколько десятков попыток, не могу понять что от меня хочет валидатор. По идее Wheel.valueOf() сам должен бросать исключение, но по видимому это не так.
package com.javarush.task.task25.task2502;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.Arrays;
/*
Машину на СТО не повезем!
*/
public class Solution {
public static enum Wheel {
FRONT_LEFT,
FRONT_RIGHT,
BACK_LEFT,
BACK_RIGHT
}
public static class Car {
protected List<Wheel> wheels;
public Car() {
try{
wheels = new LinkedList<>();
for(String s: loadWheelNamesFromDB()){
int i = 0;
for(Wheel w: Wheel.values()){
if(w.toString().equals(s)) i++;
}
if(i==0) throw new IllegalArgumentException();
else wheels.add(Wheel.valueOf(s));
}
if(wheels.size()!=4)
throw new IllegalArgumentException();
}
catch (IllegalArgumentException e) {}
//init wheels here
}
protected String[] loadWheelNamesFromDB() {
//this method returns mock data
return new String[]{"FRONT_LEFT", "FRONT_RIGHT", "BACK_LEFT", "BACK_RIGHT"};
}
}
public static void main(String[] args) {
}
}