假设我有几个类:
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 对象的数组一起工作的循环中:我想使用它的构造函数来一般地构造一个 Exception 对象,而无需明确说明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