Ниже приведен фрагмент кода, в котором я пытаюсь получить максимальную дату группы. Код работает нормально, но он показывает предупреждение о том, что Type safety: Uncheck Invocation. Что упускают, чтобы проверить?
class Movie<T> implements Comparator<T> {
static LinkedHashMap<String, List<Date>> listOfDates = new LinkedHashMap<String, List<Date>>();
static {
listOfDates.put("1", new ArrayList<Date>());
listOfDates.put("2", new ArrayList<Date>());
listOfDates.put("3", new ArrayList<Date>());
listOfDates.put("4", new ArrayList<Date>());
listOfDates.put("5", new ArrayList<Date>());
listOfDates.put("6", new ArrayList<Date>());
listOfDates.put("7", new ArrayList<Date>());
listOfDates.put("8", new ArrayList<Date>());
listOfDates.put("9", new ArrayList<Date>());
listOfDates.put("10", new ArrayList<Date>());
listOfDates.put("11", new ArrayList<Date>());
listOfDates.put("12", new ArrayList<Date>());
}
public static void loadDates(String inpDate) {
String[] dates = "27-05-201901-01-2019,02-01-2019,03-01-2019,04-01-2019,01-02-2019,01-03-2019,21-03-2019,20-05-2019,21-05-2019,22-05-2019,26-05-2019".split(",");
for (int i = 0; i < dates.length; i++) {
try {
Date date = new SimpleDateFormat("dd-MM-yyyy").parse(dates[i]);
String mth = Integer
.toString(date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate().getMonthValue());
listOfDates.get(mth).add(date);
} catch (ParseException e) {
e.printStackTrace();
}
}
System.out.println(finalString(listOfDates));
}
@Override
public int compare(Object date1, Object date2) {
Date d1 = (Date) date1;
Date d2 = (Date) date2;
int i = 0;
if (d1.compareTo(d2) == 0) {
i = 0;
}
else if (d1.compareTo(d2) > 0) {
i = 1;
}
else if (d1.compareTo(d2) < 0) {
i = -1;
}
return i;
}
public static String finalString(LinkedHashMap<String, List<Date>> dates) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
StringBuilder sb = new StringBuilder();
StringBuilder finalsb = new StringBuilder();
for (Map.Entry<String, List<Date>> entry : dates.entrySet()) {
if (entry.getValue().isEmpty() || entry.getValue().size() == 0) {
sb.append(" ").append(",");
} else if (entry.getValue().size() == 1) {
sb.append(dateFormat.format(entry.getValue().get(0))).append(",");
}
else {
sb.append(dateFormat.format(Collections.max(entry.getValue(), new Movie()))).append(","); //WARNING
}
}
int lastIndexOfTab = sb.lastIndexOf(",");
finalsb.append(sb.substring(0, lastIndexOfTab));
return finalsb.toString();
}
public static void main(String[] args) {
loadDates("Enter");
}
}
Но я получаю предупреждение в строке, где //WARNING
- это комментарий в другом состоянии.
Могу ли я узнать, почему я получаю это предупреждение ниже?
Type safety: Unchecked invocation max(List<Date>, Movie) of the generic method max(Collection<? extends T>, Comparator<? super T>) of type Collections
Почему это приходит и как мне этого избежать ..?
Любое предложение будет полезным.