我处于一种情况,我想对已加载的(即当前正在运行的应用程序类)进行一些重写。我不想重写已加载的库类。因此,我需要根据类的类型(是应用程序类还是没有应用程序类)对重写进行过滤,或者我可以通过检查ClassLoader看看它是否属于应用程序类来实现。
为了提供一些上下文,让我们假设我有以下代码
URLClassLoader urlcl = new URLClassLoader(cp);
Class c = urlcl.loadClass(_className);
假设_className
是当前正在运行的类,它已被侦听器拦截,我怎么知道该类c
是否是应用程序类?
非常感谢!
我不完全是应用程序类的意思,但是那些提示可能仍然有用。
您可以简单地检查一个类是否是另一个类的子类型:
public static boolean is1stSubTypeOf2nd(Class clazz1, Class clazz2) {
return clazz2.isAssignableFrom(clazz1);
}
如果要检查该类是否属于某个程序包(以检查它是否来自标准API,第三方库,请使用:
public static boolean isInPackage(Class clazz, String packageName) {
return clazz.getPackageName().contains(packageName);
}
此外,标准API还能为您提供有关给定类的所有超类的信息。