Почему я не могу явно передать аргумент типа универсальному методу Java?

Можно, если передать тип jre в качестве параметра метода.

static  List createEmptyList( Class type ) {
  return new ArrayList();
}

@Test
public void createStringList() {
  List stringList = createEmptyList( String.class );
}

Методы .java не могут быть универсализированы syntax так же, как тип, поэтому generic единственный вариант для java метода с динамически типизированным openjdk универсальным типом возвращаемого jre значения — уф, это глоток swift-generics :-) — передать тип в качестве openjdk аргумента.

За отличный FAQ jdk по дженерикам Java see Angelika Langer's generics FAQ.

.
.

Последующие действия:

В java этом контексте не имеет смысла java использовать аргумент массива, как java-generics в Collection.toArray( T[] ). Единственная причина, по oraclejdk которой используется массив, заключается javax в том, что тот же (предварительно kotlin-generics выделенный) массив используется openjdk для хранения результатов scala-generics (если массив достаточно велик, чтобы openjdk поместить их все). Это позволяет java экономить на постоянном выделении javax нового массива во время выполнения.

Однако scala-generics в целях обучения, если вы generic-programming хотите использовать типизацию .java массива, синтаксис очень javax похож:

static  List createEmptyList( T[] array ) {
  return new ArrayList();
}

@Test
public void testThing() {
  List integerList = createEmptyList( new Integer[ 1 ] );
}

java

generics

syntax

2022-09-16T09:17:03+00:00
Вопросы с похожей тематикой, как у вопроса:

Почему я не могу явно передать аргумент типа универсальному методу Java?