虽然说广义上的“夏季”早就随着农历日期行进到立夏节气的那一天一同到来了,但直到昨天之前我还没什么步入夏季的感觉……不得不说这两天实在是太热了,而且一直停电到清早属实糟心,昨天晚上甚至没怎么好好睡觉。
昨天电脑开不了机,但好歹还是看了书的。这两天的主要目的是解决这样一个问题——可不可以在主函数存在的类内定义一个只有这个类可以使用的类呢?
很不幸的是,这些东西在我购置的那本教材里根本就没提,不如说类的实现方式在那本书里被简单地带过了,这不禁让我再一次感叹自己“选书不慎”。鉴于也没有电子设备,也就没有获取知识的渠道,只能用脑袋瞎想。
实践总是比经验更易于理解,因此第二天(就是今天)开始时,我打开电脑后并没先查资料,而是先将所设想的东西敲进编译器。
第一次的代码如下:
public class Circie { public class Student { public String Name; public int Age; private boolean Sex; public boolean isSex() { return Sex; } } public static void main(String[] args) { Student kop=new Student(); kop.Age=55; System.out.print(kop.Age); } }
第一次并没注意到内部的类需要有外部类的示例来初始化,得到了这样的反馈:
Exception in thread "main" java.lang.Error: 无法解析的编译问题: 没有任何类型 Circie 的外层实例可访问。必须用类型 Circie 的外层实例(例如,x.new A(),其中 x 是 Circie 的实例)来限定分配。
在此不得不感谢eclipse的纠错功能,本来不明所以的问题一目了然了
于是修改后加入了外层类初始化的语句,下面是修改后的代码:
public class Circie { public class Student { public String Name; public int Age; private boolean Sex; public boolean isSex() { return Sex; } } public static void main(String[] args) { Circie f =new Circie(); Student kop=f.new Student(); kop.Age=55; System.out.print(kop.Age); } }
这样就可以得到想要的结果了。
最后再感叹一句,电能和网络还真是伟大发明啊,没有这些外物帮助的这两天,解决这么一个简单问题都差点没把我恶心死。
科学万岁,也只能说科学万岁了