正常的【new】关键字,肯定要加载类。
package ClassLoader;
public class ClassLoaderMethod {
public static void main(String[] args) throws ClassNotFoundException {
//使用Class.forName()来加载类,默认会执行初始化块
Class.forName("ClassLoader.Test"); //因为我的包名为ClassLoader
//所以为ClassLoader.Test,正常情况下【包.类】
}
}
class Test {
private Test() {
System.out.println("私有构造方法模块");
}
static{
System.out.println("静态初始化块执行了!");
}
}
输出:
静态初始化块执行了!
通过反射【Class.forName】加载类,会初始化此类【例:Test】
package ClassLoader;
class parent{
public static int parent=1;
static{
System.out.println("parent static块");
}
}
class child extends parent{
static{
System.out.println("child static块");
}
}
public class MainLoader {
public static int i=1;
static{
System.out.println("MainLoader static i:"+i);
System.out.println("MainLoader static 块");
}
public static void main(String[] args) {
System.out.println(child.parent);
}
}
输出:
MainLoader static i:1
MainLoader static 块
parent static块
1
当我们调用子类的常量parent时,可以看到父类已经初始化了,但是子类child并没有初始化,因为其静态代码块并没有执行。
package ClassLoader;
public class MainLoader {
public static int i=1;
public static final int j=1;
static{
System.out.println("static i:"+i+"j:"+j);
i=2;
System.out.println("静态代码块");
}
public static void main(String[] args) {
}
}
输出:
static i:1j:1
静态代码块
main方法中什么都没有做,但是static静态代码块中已经执行。可见包含main的类,已经加载。
package ClassLoader;
public class LoaderParent {
@SuppressWarnings("rawtypes")
public static void main(String[] args) {
LoaderParent instance= new LoaderParent();
Class c = instance.getClass();
ClassLoader loader = c.getClassLoader();
System.out.println(loader) ;
System.out.println(loader.getParent());
System.out.println(loader.getParent().getParent());
//AppClassLoader>ExtClassLoader
//BootstrapLoader为空。
//原因是Bootstrap Loader(启动类加载器)是用C语言实现的,
//找不到一个确定的返回父Loader的方式,于是就返回null。
}
}
输出:
sun.misc.Launcher$AppClassLoader@73d16e93
sun.misc.Launcher$ExtClassLoader@15db9742
null
直接【new LoaderParent】得到实例,【getClass()】方法,
得到java.lang.Class类信息对象,
然后得到是哪一个类加载器加载的类,通过打印得到
是【sun.misc.Launcher$AppClassLoader@73d16e93】,
所以这个类信息是AppClassLoader加载的。
2025 - 快车库 - 我的知识库 重庆启连科技有限公司 渝ICP备16002641号-10
企客连连 表单助手 企服开发 榜单123