Ребята поясните пожалуйста, зачем нам нужно создавать отдельный массив длинной второго параметра, затем в него копировать массив-второй параметр, и туда в последний элемент вставлять наш класс из первого параметра? Если мы этого не делаем кидает экспешн:
Exception in thread "main" java.lang.ClassCastException: com.sun.proxy.$Proxy0 cannot be cast to com.javarush.task.task32.task3206.Item
at com.javarush.task.task32.task3206.Solution.getProxy(Solution.java:32)
at com.javarush.task.task32.task3206.Solution.main(Solution.java:14)
Почему нельзя просто указать так return (T) Proxy.newProxyInstance(clazz.getClassLoader(), interfaces, new ItemInvocationHandler());
getProxy должен иметь два параметра. Первый - класс возвращаемого типа, второй - классы дополнительных интерфейсов (используй аргумент переменной длины ...).
Класс я указал, дополнительные интерфейсы передал, зачем нам нужно копировать clazz в interfaces.