假設我有幾類:從泛型類型獲取枚舉類?
Class ExceptionA{
public ExceptionA(ExceptionA.ErrorCode errorCode){}
setters...
getters...
public static enum ErrorCode{
EC_ABC,EC_XYZ,EC_123
}
Class ExceptionB{
public ExceptionB(ExceptionB.ErrorCode errorCode){}
setters...
getters...
public static enum ErrorCode{
EC_DEF,EC_LOL,EC_456
}
在一個循環的地方,用含ExceptionA,ExceptionB,ExceptionC對象的數組工作:我想使用它的構造而沒有明確說明ExceptionX.ErrorCode
一般構造異常對象。
Class<? extends Exception> expectedException = exception.getClass().getConstructor(Enum.class).newInstance(someErrorCodeEnum);
該問題發生在getConstructor()。構造函數對每個Exception類都存在,但它們採用SpecificException.ErrorCode類型。不只是一個通用的Enum.class。有沒有辦法像這樣工作?:
ExceptionA exceptionAobject = new ExceptionA(EC_ABC);
exceptionAobject.getEnumClassFromString("ErrorCode"); // Should be of type ExceptionA.ErrorCode
可能有一些bean introspection API可能工作。否則,您需要使用'getConstructors()'獲取構造函數,循環遍歷它們以找到參數類型是Enum的子類型的構造函數,然後使用該構造函數。 –
是否使用不同的錯誤代碼在你的異常類之間引入* only *區別,或者也可能存在其他差異? –
我還沒有注意到,但是可能有其他的區別。我只想說明這些可能性。 –