как получить класс дженериков? - PullRequest
0 голосов
/ 27 июня 2019

Я читаю исходный код о пружине и хочу узнать класс возвращаемого значения, который является общим. Что мне делать?

public static <T> T getBean(String name) {
    assertContextInjected();
    System.out.println();
    return (T) applicationContext.getBean(name);
}

1 Ответ

2 голосов
/ 27 июня 2019

К сожалению, в Java короткий ответ, что вы не можете. Вы можете рассматривать Generics как просто функцию времени компиляции, чтобы гарантировать правильную обработку. Тем не менее, скомпилированный байт-код отбрасывает всю информацию о типе в процессе, называемом «стирание типа», поэтому эффективно то, что JVM получает во время выполнения, просто:

public static Object getBean(String name) {

Однако это не является основной причиной вашей проблемы, связанной с вашим звонком. Я полагаю, у вас есть что-то вроде:

SomeClass someVariable = getBean("someName");

Что происходит, так это то, что запрашиваемый вами компонент не относится к типу SomeClass (и приведение не поможет вам в этом) - поэтому вам нужно выяснить, какой класс представляет собой компонент, предоставляемый Spring. и затем измените SomeClass в вызывающей стороне, чтобы ожидать этот тип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...