我最近在Java中乱用ClassLoaders,试图测试使用动态加载类(使用Class.forName(String name))和自定义的代码ClassLoader.
我有自己的自定义ClassLoader设置,应该可配置为ClassNotFoundException在尝试加载给定的类时抛出.
public class CustomTestClassLoader extends ClassLoader {
private static String[] notAllowed = new String[]{};
public static void setNotAllowed(String... nonAllowedClassNames) {
notAllowed = nonAllowedClassNames;
}
public static String[] getNotAllowed() {
return notAllowed;
}
public CustomTestClassLoader(ClassLoader parent){super(parent);}
@Override
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
for (String s : notAllowed) {
if (name.equals(s)) {
throw new ClassNotFoundException("Loading this class is not allowed for testing purposes.");
}
}
if(name.startsWith("java") || name.startsWith("sun") …Run Code Online (Sandbox Code Playgroud)