Thinking in java 4e Chapter2 Exercise4 本帖最后由 wwwww5aaaaa 于 2010-02-15 18:52:17 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 因为DataOnly是在DataOnlyTest中的inner class,所以要想调用DataOnly的构造方法,就必须通过DataOnlyTest的一个实例 因为你这个class DataOnly是内部类,还有,它是非静态的 所以DataOnly do = new DataOnly();可以表现为 DataOnly do = this.new DataOnly();//这里this是被隐藏的,当你实例化非静态内部类的时候,必须有它外部类的引用,所以这里有隐藏的this!所以报这个错误! 可以改为这样 DataOnlyTest dot = new DataOnlyTest(); DataOnly do = dot.new DataOnly(); 第一段: 他在成全区定一个了一个内部类。也就是说这个类定义为成员,因为没有用static所以该类不是静态的。用静态方法main来调用DataOnly data=new DataOnly();就会报错。(注意是使用该类来声明变量的时候)第二段:DataOnlyTest与DataOnly 互相独立。而且main中在调用其实,进行了实例化。这种是最正常不过的情况。第三段:内部类在main中定义的,所以属于main局域范畴(内存分配在栈中),main中自然可见。 static 表示你用到了该类就会产生了,而其他类的成员要使用类的实例时才产生。就是你要new一个所以static的成员或代码的生命周期超过其他类成员的。所以它不能访问还没有产生的实例成员。因为它们可能还不存在呢。 main方法是静态的,所以只能使用静态的方法或字段 谁知道声明jacob的一个小问题??? 报表工具Birt:动态指定表名 NoClassDefFoundErro 怎么应用绘图工具啊?? JDK配置问题 java中如何让文本框中的数据为密码形式 为什么这个泛型不成功? 帮忙解决弹出的对话框中文出现乱码问题,多谢 谁能告诉我如何在java中对一个数开n次方啊? 关于接口和类型强制转换的问题! this问题 JTextarea的问题
所以DataOnly do = new DataOnly();可以表现为
DataOnly do = this.new DataOnly();//这里this是被隐藏的,当你实例化非静态内部类的时候,必须有它外部类的引用,所以这里有隐藏的this!所以报这个错误! 可以改为这样 DataOnlyTest dot = new DataOnlyTest();
DataOnly do = dot.new DataOnly();
所以static的成员或代码的生命周期超过其他类成员的。所以它不能访问还没有产生的实例成员。因为它们可能还不存在呢。