Когда использовать javassist для создания метода, как назначить тип возвращаемого метода int класса класса? - PullRequest
0 голосов
/ 06 марта 2019

Я хочу использовать javassist для создания метода, подобного этому:

public List<String> queryList(Long id) { return new ArrayList<String>();}

но как назначить универсальный тип класса "String" для List?

1 Ответ

0 голосов
/ 15 марта 2019

Это невозможно. См. документация по javassist :

Обобщения Java реализованы методом стирания. После компиляция, все параметры типа сброшены. Например, предположим, что ваш исходный код объявляет параметризованный тип Vector:

Vector<String> v = new Vector<String>();
  :
String s = v.get(0);

Скомпилированный байт-код эквивалентен следующему коду:

Vector v = new Vector();
  :
String s = (String)v.get(0);

Итак, ваш метод после компиляции будет выглядеть следующим образом:

public List queryList(Long id) { return new ArrayList();}

За сценой, если необходимо, происходит приведение к нужному типу. См. Также: Описание типа Erasure в Java

...