Прежде всего я создаю интерфейс с двумя параметрами.
public interface Generator <T, R> {
public T next (R x);
}
После чего создаю демо-класс
public class DemoClass {
private int id;
public DemoClass (int id){
this.id = id;
}
}
Создаю класс, который реализует интерфейс и параметры.
public class GenericClass implements Generator <DemoClass, Integer>{
public DemoClass next(Integer x) {
return new DemoClass (x);
}
}
Теперь я создаю класс с обобщенным методом и тут появляется проблема, а именно, я не могу передать два параметра одновременно. Как это сделать правильно?
import java.util.*;
public class MainClass {
private static Random rand = new Random ();
public static <T> T [] arr (T [] a, Class <?> typeToken){
try{
Generator <?, ?> gen = (Generator <?, ?>)typeToken.newInstance(); // Как передать два параметра.
for (int i=0; i!=a.length; i++){
a[i] = (T) gen.next(rand.nextInt(100)); // Эта строчка не работает.
}
} catch (Exception e){
throw new RuntimeException (e);
} return a;
}
public static void main (String [] args){
@SuppressWarnings("unused")
DemoClass [] myarr = arr (new DemoClass[10], GenericClass.class);
}
}
, как правильно задать параметры, передаваемые в обобщенный метод?