今天和小伙伴讨论私有类的对象创建问题,大家都知道外部类是不能设置为私有的,但是内部类可以设置为私有。问题是私有内部类是否可以实例化一个对象,并调用私有内部类中的方法和属性呢?答案是:Yes!Java语法规范既然允许创建私有的内部类,私有内部类中的方法肯定会被调用。要不然,私有内部类就失去了它的作用。
于是小coder尝试写了如下代码。
public class Test1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
People1 p=new People1();
People1.Man man = p.new Man();
System.out.println(man.name);
}
}
class People1{
class Man{
String name;
int year;
}
}
public class Test2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
People2.Man2 man = new People2.Man2();
System.out.println(man.name);
}
}
class People2{
static class Man2{
String name;
int year;
}
}
public class Test3 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String name="xiaom";
Test3 test=new Test3();
Test3.Outer outer=test.new Outer();
((Test3.Outer.Inner) outer.getInner()).setName(name);
System.out.println(((Test3.Outer.Inner) outer.getInner()).getName());
}
class Outer{
Object getInner(){
return this.inner;
}
private class Inner{
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Inner inner=new Inner();
}
}
Java私有内部类实例化对象访问私有内部类中的方法
点赞
收藏