哈利路亚
Let's take one million years picnic
欢迎来到Sean Cleveland的博客
JAVA学习日报 7.12

虽然说广义上的“夏季”早就随着农历日期行进到立夏节气的那一天一同到来了,但直到昨天之前我还没什么步入夏季的感觉……不得不说这两天实在是太热了,而且一直停电到清早属实糟心,昨天晚上甚至没怎么好好睡觉。

昨天电脑开不了机,但好歹还是看了书的。这两天的主要目的是解决这样一个问题——可不可以在主函数存在的类内定义一个只有这个类可以使用的类呢?

很不幸的是,这些东西在我购置的那本教材里根本就没提,不如说类的实现方式在那本书里被简单地带过了,这不禁让我再一次感叹自己“选书不慎”。鉴于也没有电子设备,也就没有获取知识的渠道,只能用脑袋瞎想。

实践总是比经验更易于理解,因此第二天(就是今天)开始时,我打开电脑后并没先查资料,而是先将所设想的东西敲进编译器。

第一次的代码如下:

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);
    }
}

这样就可以得到想要的结果了。

最后再感叹一句,电能和网络还真是伟大发明啊,没有这些外物帮助的这两天,解决这么一个简单问题都差点没把我恶心死。

科学万岁,也只能说科学万岁了

posted on 2020-07-12 22:29  哈利路亚#0207  阅读(118)  评论(0编辑  收藏  举报
Live2D