[英]Generic Method in Non-Generic Class
我試圖使用泛型方法,所以我不必重復代碼。 我試過了:
private Listener createListenerAdapter(Class<T> clazz)
{
// do something
}
( clazz
很重要,因為class
是保留的)。
但Netbeans抱怨說:“找不到符號類T”。
我將要傳遞一些具有相同方法的不同類。 我應該在哪里定義T?
將方法聲明為:
private <T> Listener createListenerAdapter(Class<T> clazz)
有關更多信息,請參閱Java教程 。
編輯:如果T
與返回類型無關,您也可以使用通配符:
private Listener createListenerAdapter(Class<?> clazz)
編輯1:如果clazz
用於表示一種Listener
,您可以定義邊界來限制調用者(以避免強制轉換和潛在的運行時異常):
private <L extends Listener> L createListenerAdapter(Class<L> clazz)
或者使用通配符:
private Listener createListenerAdapter(Class<? extends Listener> clazz)
但這取決於如何在身體中使用clazz
。
通用聲明也可以通過參數化它們在方法級別進行,如下所示:
private <T> Listener createListenerAdapter(Class<T> clazz)
{
// do something
}
如果您沒有使用該類型(不太可能,但您可能嘗試避免原始類型警告):
private Listener createListenerAdapter(Class<?> clazz)
{
// do something, without knowing the T of the clazz
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.