社区
Java EE
帖子详情
关于类继承初始化问题
chjwin
2009-08-19 04:46:41
对于由引用类变量(class field)所引发的初始化,只会初始化真正定义该field的class。
这句话怎么去理解?有什么样的例子可以证明这一句话的正确性!请高手帮忙写个简单例子!
请高手指教,先谢为主,谢谢大家!
...全文
73
5
打赏
收藏
关于类继承初始化问题
对于由引用类变量(class field)所引发的初始化,只会初始化真正定义该field的class。 这句话怎么去理解?有什么样的例子可以证明这一句话的正确性!请高手帮忙写个简单例子! 请高手指教,先谢为主,谢谢大家!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
humanity
2009-08-19
打赏
举报
回复
哦,还是拼写错误啊,^_^, 我的 CLASSPATH 环境变量中有 CLASSPATH=.; 这是安装 JDK 时自动设置的,所以没出错,你也可以把 java.exe X 改成 java -cp . X 来运行。
humanity
2009-08-19
打赏
举报
回复
纠正拼写错误:
2.我们不用 eclipse,我们打开 cmd.exe 去 X.class 对应的目录,手工输入 java.exe X 来运行程序,注意,我没有给 -classpath,当然这个 Advice 类就在当前类路径中找不到,但是你会发现我的程序没有报告 ClassNotFoundException。
humanity
2009-08-19
打赏
举报
回复
楼主可能在看 JVM 相关的书籍,我猜测你的问题可以通过下面这个实验了解方向在哪儿,当然我是在猜测,不一定猜对了。
用下面这个类,楼主做个实验,按如下步骤:
1.先在 classpath 中添加 Advice 对应的 jar 包,让编译通过,当然我只是随便找一个类,你可以不用Advice而用任何在 JDK 中没有自带的类并且类路径中只包含这个对应的 jar 包,这一步你只要让程序编译通过就行了。
2.我们不用 eclipse,我们打开 cmd.exe 去 X.class 对应的目录,手工输入 java.exe -cp X 来运行程序,注意,我没有给 -classpath,当然这个 Advice 类就在当前类路径中找到,但是你会发现我的程序没有报告 ClassNotFoundException。
通过这个实验,我们证实了 JVM 规范里的一句话,当我们事实上没有用到一个类时 JVM 实现不必初始化这个类,但是你提前初始化也没关系,只不过有一点要注意,在事实上没有用到这个类时我们不能抛出因为用到这个类才会产生的异常,在我们例子,JVM 实现不能抛出 Advice ClassNotFoundException, 因为事实上并没有用到 Advice 类。
3.我们再把 X() 这个构造方法改成下面这个样子,然后再重复上面第1步和第2步来试试看结果是否不一样?
public X() {
System.out.println("Constructor");
advice = new Advice(){};
)
<我们先假设没有包名,这个不重要>
import org.aopalliance.aop.Advice;
public class X {
private Advice advice = null;
public static void hello() {
System.out.println("Hello");
}
public X() {
System.out.println("Constructor");
}
public static void main(String[] args) {
hello();
X x = new X();
}
}
woming66
2009-08-19
打赏
举报
回复
?没明白
bean
2009-08-19
打赏
举报
回复
我咋觉得这句话是错的呢,
Linux0.11内核
初始化
讲解与调试
结合bochs仿真调试工具边讲解边调试linux0.11版本内核
初始化
过程,通过该课程可以学习和理解关于linux内核在内存中的分布、分段及分页机制、逻辑地址线性地址及物理地址的区别,更系统的理解CPU实模式及保护模式等。...
python:
类
的
继承
及
初始化
二、
类
的
初始化
初始化
函数的意思是,当你创建一个实例的时候,这个函数就会被调用。
初始化
函数的写法是固定的格式:中间是“init”,这个单词的中文意思是“
初始化
”,然后前后都要有【两个下划线】,然后__init__...
C++面向
继承
时构造函数
初始化
C++派生
类
不能
继承
基
类
的构造函数,对于派生
类
新增成员,派生
类
自定义构造函数
初始化
;对于
继承
来的成员,调用基
类
构造函数进行
初始化
。当基
类
没有默认构造函数时,派生
类
构造函数需要给基
类
构造函数传递参数,形如...
深入理解Java对象的创建过程:
类
的
初始化
与实例化
在实例化一个对象时,JVM首先会检查相关
类
型是否已经加载并
初始化
,如果没有,则JVM立即进行加载并调用
类
构造器完成
类
的
初始化
。在
类
初始化
过程中或
初始化
完毕后,根据具体情况才会去对
类
进行实例化。本文试图对JVM...
c++
类
多重
继承
初始化
顺序
c++
类
多重
继承
时,
初始化
顺序是一个基础的
问题
,笔者每次清楚了以后,过段时间有点含糊了,有些基础的
问题
,在实际开发中,用到的频率少,今天做一个总结跟大家一起分享。 这里先讨论一般的基
类
继承
时的
初始化
行为...
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写文章