簡體   English   中英

非泛型類中的通用方法

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

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