我的目標是實現一個接受類實例的操作,但前提是具體傳遞類繼承自Collection。如何使用泛型正確指定類<?>參數
我在我的代碼上得到編譯器警告,我無法解決。
package com.fun.with.generics;
import java.util.ArrayList;
import java.util.Collection;
public class AcceptTypedClass
{
// Warning here on 'Collection': ... raw type, references should be parameterized.
private static void printCollectionClass(Class<? extends Collection> c)
{
System.out.println(c.getName());
}
public static void main(String[] args)
{
// Warning here on ArrayList: ... raw type, references should be parameterized.
Class<ArrayList> arrayList = ArrayList.class;
printCollectionClass(arrayList);
}
}
我明白的警告信息,但如果我通過添加缺少的類型參數如下圖所示修復警告,我得到一個錯誤。
Class<ArrayList<?>> arrayList = ArrayList.class;
有人可以解釋一下嗎?問題是如果我可以編寫上面的代碼,以便我不會發出警告(並且代碼有效)?
你有沒有試過Class?擴展集合>>'?請注意,進一步向下傳遞'ArrayList',其中'Class'是預期的。 –