@thatmaniscool

Как правильно передать двойной параметр в обобщенны метод Java?

Прежде всего я создаю интерфейс с двумя параметрами.
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);
	}
}



























, как правильно задать параметры, передаваемые в обобщенный метод?
  • Вопрос задан
  • 303 просмотра
Пригласить эксперта
Ответы на вопрос 1
Потому что параметр не того типа, который ожидается:
(T) ((Generator<?, Integer>) gen).next(rand.nextInt(100)); // Эта строчка уже работает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы