簡體   English   中英

如何獲得泛型類?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM