[英]how to get the class of generic?
我正在閱讀有關spring的源代碼,並且想知道通用的返回值類,該怎么辦?
public static <T> T getBean(String name) {
assertContextInjected();
System.out.println();
return (T) applicationContext.getBean(name);
}
不幸的是,在Java中,簡短的答案是您做不到。 您可以將泛型基本上看作只是編譯時功能,以確保正確處理。 但是,編譯后的字節碼會在稱為“類型擦除”的過程中丟棄所有類型信息,因此,有效的JVM在運行時得到的就是:
public static Object getBean(String name) {
但是,這都不是問題的根本原因,這與您的呼叫有關。 我假設你有類似的東西:
SomeClass someVariable = getBean("someName");
發生的是您所請求的bean不是SomeClass類型的(並且強制轉換不會幫助您)-因此,您需要做的是弄清楚Spring給您的bean是哪個類,然后更改調用方中的“ SomeClass”以使用該類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.