gpt4 book ai didi

java - 从 String className 获取可抛出的类对象

转载 作者:行者123 更新时间:2023-11-29 04:27:24 25 4
gpt4 key购买 nike

给定一个类似 com.abc.XYZException 的字符串我想要一个可抛出的类,该类可以使用该字符串作为类名从类路径中解析。

private Class<? extends Throwable> getExceptionClass(String className){
return Class.forName(className);
}

此片段无法编译,因为 Class.forName(className)返回 Class<?>但是Class<? extends Throwable>是必须的。如何返回 Class<? extends Throwable>

最佳答案

未经检查的转换是不可避免的,但您可以通过在转换之前检查输入是否符合要求来做更安全的事情。
您确实可以使用 ClassisAssignableFrom() 方法来检查加载的 Class 实例是否是 Throwable 类。

  public Class<? extends Throwable> getExceptionClass(String className) {
try {
Class<?> clazz = Class.forName(className);
if (!Throwable.class.isAssignableFrom(clazz)) {
throw new IllegalArgumentException("error in the provided classname");
}
return (Class<? extends Throwable>) clazz;
} catch (ClassNotFoundException e) {
// handling the exception
}
}

关于java - 从 String className 获取可抛出的类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45570826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com