java – 由classloader和new关键字创建的实例之间的功能差异
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 由classloader和new关键字创建的实例之间的功能差异,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1520字,纯文字阅读大概需要3分钟。
内容图文
![java – 由classloader和new关键字创建的实例之间的功能差异](/upload/InfoBanner/zyjiaocheng/794/0591434b149c484c850adcb8ea5be11c.jpg)
我在课堂加载和初始化概念方面有点困惑
1: Class.forName("test.Employee").newInstance();
2: ClassLoader.getSystemClassLoader().loadClass("test.Employee").newInstance();
3: new test.Employee();
上面编写的代码的每一行都是创建一个Employee类的实例,但我不明白这三种方法的区别.
解决方法:
这三种方法之间的核心差异归结为类在运行时的位置以及您可以使用它们执行的操作.
例如…
Class.forName("test.Employee").newInstance();
将使用当前类的ClassLoader来搜索测试包中名为Employee的类.这将允许您发现在编译时可能不可用的类以及动态加载到同一类加载器上下文中的类.如果在当前上下文中找不到类,这也将搜索它的父类加载器…
ClassLoader.getSystemClassLoader().loadClass("test.Employee").newInstance();
这将使用“system”ClassLoader,这通常是启动主应用程序的类.
使用这两种方法中的任何一种都是生成动态应用程序的好方法,其中在编译类型中不知道Class的实际实现.这里的问题是它会影响可见性并限制您可以对加载的类执行的操作.
例如,虽然您可能已经加载了test.Employee类并创建了它的实例,除非您在编译时引用了test.Employee,否则您希望能够转换它.这通常是界面非常方便的地方.
同样,您可以在运行时创建自己的ClassLoader实例并加载类或jar,以提供在编译时实现未知的插件,工厂或管理器.通常,通过使用接口来描述这些功能.
示例包括java.awt.Toolkit和JDBC java.sql.Driver
在一天结束时,ClassLoader机制提供了一种方法,通过该方法可以加载类文件并将其实例化到当前的JVM中. new关键字执行类似的工作,但结果是在编译时预先确定的
ClassLoaders是一个非常强大的功能,提供了很多功能,但也可能是混乱,特别是它们链接在一起的方式
你可能会发现……
> The basics of Java class loaders
> How ClassLoader Works in Java
一些帮助
内容总结
以上是互联网集市为您收集整理的java – 由classloader和new关键字创建的实例之间的功能差异全部内容,希望文章能够帮你解决java – 由classloader和new关键字创建的实例之间的功能差异所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。