我有一個將泛型類接口作爲參數的方法,我想檢查提供的接口是否擴展了某個基類,如果沒有,我會拋出異常。是否有可能做類似的事情:是否有可能評估類接口是否擴展某個基類?
public void genericMethod(Class<T> c) {
if (!(c instanceof baseClass)) {
throw new Exception("Must be instance of base class");
}
}
即使有可能,它會被認爲是好的做法?或者,如果Java泛型遵循ducktyping
的相同原則?
爲了更準確'baseClass.class.isAssignableFrom(C) '。無論如何+1 – Pshemo
哦,我明白你的意思了。然而,沒有獨特的通用解決方案:如果'base'是一個'Class'(正如我最初假設的那樣,基於Java約定),則不能使用'.class'。如果它是一個類的*名稱*,那麼你必須使用'.class'。更確切地說,如果'baseClass'是一個類的名字,那麼我原來編寫的代碼甚至不會編譯;但是如果它是'Class'類型的變量,那麼你的代碼甚至不會編譯。 –
由於OP使用'instanceof baseClass'我假設'baseClass'是接口的名稱而不是Class引用,但是所有東西都可以在SO questins :) – Pshemo