------昨天夜里,突然发现一个关于成员内部类很有意思的东西,兴冲冲的穿起秋裤撸代码实验,写博客。今天突然发现栗子很尴尬啊,于是在这寒夜,这次要穿好衣服,安心码代码。
先附上昨天的已经进冷宫的博客:
好像有点模糊?不管了,反正不是重要的。我今天仔细琢磨了一下这个成员内部类的name()方法,这不就是个getter吗?需要这么大费周章吗?
那就改动一下吧。下面上小小改动下的代码:
带成员内部类的类(类1):
package test;
public class Person {
private int i=10;
public class Programmer{
int a =i; //将方法撤了
}
}
测试类(类2):
package test;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person farmWorker = new Person();
Person.Programmer ape = farmWorker.new Programmer();
int i =ape.a; //直接调用
System.out.println(i); //输出10
}
}
------可以看出,这样同样突出重围成功。呃,看上去还是个getter。但是,如果这个参数本来初衷就是不让其他类(类2)可用的,在类1的成员内部类用了,那就有可能被类外(类2)用到。这是危险的苗头啊,这可不行。所有,内部类虽美好,但是用用局部内部类和匿名内部类吧,成员内部类就慎用了,最好只是做类内处理,这样就可以把该成员内部类设置成private。感觉又是美好的一天,不争气的鼻涕又出来了,啊~~!