Введите предупреждение о безопасности в коллекции - PullRequest
0 голосов
/ 30 января 2020

Ниже приведен фрагмент кода, в котором я пытаюсь получить максимальную дату группы. Код работает нормально, но он показывает предупреждение о том, что 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

Почему это приходит и как мне этого избежать ..?

Любое предложение будет полезным.

...