社区
Java EE
帖子详情
Class.forName的作用?为什么要用?
djd12312311
2010-03-21 11:03:29
Class.forName的作用?为什么要用?
...全文
1491
33
打赏
收藏
Class.forName的作用?为什么要用?
Class.forName的作用?为什么要用?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
33 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yugong2009
2010-03-22
打赏
举报
回复
[Quote=引用 17 楼 luffysy 的回复:]
使用常量 不会加载类, 编译器对常量进行了特殊优化,
[/Quote]
这个常量要不是静态的,那必然要求先加载类
只是在静态常量操作时,可能存在特殊化,回去再查查
yueweiac110
2010-03-22
打赏
举报
回复
API.....
yugong2009
2010-03-22
打赏
举报
回复
回去得好好查查
LuffySY
2010-03-22
打赏
举报
回复
[Quote=引用 13 楼 dinghun8leech 的回复:]
引用 12 楼 bearkin 的回复:
俺昨天已经说了 是被加载的时候执行 说不定你使用他的常量不算做该类被加载的操作呢?
昨天没找到查看程序当前所加载的类的方法,因此——无证据无真相。
[/Quote]
使用常量 不会加载类, 编译器对常量进行了特殊优化,
LuffySY
2010-03-22
打赏
举报
回复
反射。获取class 实例 通过class实例 可以进行很多该类的操作 非常有用
wst004
2010-03-22
打赏
举报
回复
类的加载与初始化,还得看下java 规范。再来验证
wuzhixiong1013
2010-03-22
打赏
举报
回复
jdbc中加载驱动类
dinghun8leech
2010-03-22
打赏
举报
回复
[Quote=引用 12 楼 bearkin 的回复:]
俺昨天已经说了 是被加载的时候执行 说不定你使用他的常量不算做该类被加载的操作呢?
[/Quote]
昨天没找到查看程序当前所加载的类的方法,因此——无证据无真相。
BearKin
2010-03-22
打赏
举报
回复
[Quote=引用 9 楼 dinghun8leech 的回复:]
后来想想也觉得这是合理的,final的只能赋一次值,所以他更是完全和这个类无关了,这个类有没有经过正确的初始化和他无关。
当然,这个final的第一次赋值发生在static{}里的话,还是要初始化的。
[/Quote]
俺昨天已经说了 是被加载的时候执行 说不定你使用他的常量不算做该类被加载的操作呢?
jcqhaha
2010-03-22
打赏
举报
回复
java...
发现还真是,不是那么很快就可以弄的很明白啊
dinghun8leech
2010-03-22
打赏
举报
回复
[Quote=引用 30 楼 caisq_learning 的回复:]
并不是类被加载时静态区域就一定会执行的
static Class forName(String name,boolean initialize,ClassLoader loader)
这个是forName的另外一个版本,将initialize设置成false后在加载类的时候并不会立即运行静态区域,而会在使用类建立对象时才运行才运行。
当然默认的还是加载时就运行
[/Quote]
我回家查资料去,现在已经晕了。
guo624587253
2010-03-22
打赏
举报
回复
反射,可以动态获取一个类的方法、属性、构造方法等信息,可以动态创建类,用处非常广泛
当你 new Object();对象的时候 ,内存已经给你 Class c= Class.forname(“”); 把方法,成员变量在内存已经给你分配
caisq_learning
2010-03-22
打赏
举报
回复
[Quote=引用 8 楼 dinghun8leech 的回复:]
回7楼,我也觉得奇怪,难道在我头脑里扎根了快2年的理解是错的?我也一直认为类被加载了,static {}肯定要执行的。
Java code
package classloader;
public class Father {
static {
System.out.println("Father:static");
}
}
Java co……
[/Quote]
并不是类被加载时静态区域就一定会执行的
static Class forName(String name,boolean initialize,ClassLoader loader)
这个是forName的另外一个版本,将initialize设置成false后在加载类的时候并不会立即运行静态区域,而会在使用类建立对象时才运行才运行。
当然默认的还是加载时就运行
yinxingshashou
2010-03-22
打赏
举报
回复
就是 new一个 class。forname 里面的参数(类) 然后自动注册了驱动
dinghun8leech
2010-03-22
打赏
举报
回复
[Quote=引用 27 楼 bearkin 的回复:]
我不断的跟你强调 不是说被加载不执行 而是你确认他加载了么?
[/Quote]
没找到查看当前加载的类的方法,没法确认。
BearKin
2010-03-22
打赏
举报
回复
[Quote=引用 24 楼 dinghun8leech 的回复:]
引用 22 楼 bearkin 的回复:
基础差也可以猜猜嘛..像我不就猜对了么..有替我解释的 哈哈..
我的猜测是类被加载了,但是类加载器很聪明,发现常量(基本类型)可直接使用,就偷懒了一步。呵呵。猜错了。
[/Quote]
我不断的跟你强调 不是说被加载不执行 而是你确认他加载了么?
sunlaji008
2010-03-22
打赏
举报
回复
java 基础 要想搞懂也很难的嘛……
SambaGao
2010-03-22
打赏
举报
回复
[Quote=引用 3 楼 youyayewei 的回复:]
Class.forName(xxx.xx.xx) 返回的是一个类,如在Java中,JDBC连接数据库操作,用该方法加载驱动类
[/Quote]
..
dinghun8leech
2010-03-22
打赏
举报
回复
[Quote=引用 22 楼 bearkin 的回复:]
基础差也可以猜猜嘛..像我不就猜对了么..有替我解释的 哈哈..
[/Quote]
我的猜测是类被加载了,但是类加载器很聪明,发现常量(基本类型)可直接使用,就偷懒了一步。呵呵。猜错了。
神之泪花
2010-03-22
打赏
举报
回复
路过,俺是来学习的
加载更多回复(13)
node-v4.1.0-linux-x64.tar.xz
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
基于AT89S52的数字温度计设计说明.docx
基于AT89S52的数字温度计设计说明.docx
HTML+CSS+JS精品网页模板H108.rar
HTML5+CSS+JS精品网页模板,设置导航条、轮翻效果,鼠标滑动效果,自动弹窗,点击事件、链接等功能;适用于大学生期末大作业或公司网页制作。响应式网页,可以根据不同的设备屏幕大小自动调整页面布局; 支持如Dreamweaver、HBuilder、Text 、Vscode 等任意html编辑软件进行编辑修改; 支持包括IE、Firefox、Chrome、Safari主流浏览器浏览; 下载文件解压缩,用Dreamweaver、HBuilder、Text 、Vscode 等任意html编辑软件打开,只需更改源代码中的文字和图片可直接使用。图片的命名和格式需要与原图片的名字和格式一致,其他的无需更改。如碰到HTML5+CSS+JS等专业技术问题,以及需要对应行业的模板等相关源码、模板、资料、教程等,随时联系博主咨询。 网页设计和制作、大学生网页课程设计、期末大作业、毕业设计、网页模板,网页成品源代码等,5000+套Web案例源码,主题涵盖各行各业,关注作者联系获取更多源码; 更多优质网页博文、网页模板移步查阅我的CSDN主页:angella.blog.csdn.net。
node-v6.15.0-linux-armv7l.tar.xz
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
13-12.网络安全法.mp4
13-12.网络安全法.mp4
Java EE
67,515
社区成员
225,878
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章