62,621
社区成员
发帖
与我相关
我的任务
分享
OutClass.StaticInerClass staticInerObject = new OutClass.StaticInerClass();//获得静态内部类对象
systerm.out.println(staticObject.ordinaryProperty.toString());打印内部类的非静态成员
public class Test {
String test;
public void setTest(){
Test1 t=new Test1();
test=t.test1;
}
public String getTest(){
Test1 t=new Test1();
return t.test1;
}
static class Test1{
String test1="Hello world";
public String getTest1(){
String s=new String("Hello world from static class");
return s;
}
}
}
静态类只是说,这个类归属于外不类,而不归属于外部类对象,并且内存中是存储在静态代码区。你可以通过外部类访问内部类,再访问内部类的静态成员,也就只有静态内部类的静态成员可以通过Outerclass.Innerclass.staticMember方式访问,如果静态内部类拥有非静态成员,那这个成员本身就归属于静态内部类的对象,静态内部类对象需要手动创建,然后就可以通过InnerclassObject.NonStaticMember方式访问。所以,无论在外部类还是在main函数里面,访问一个类的静态内部类的非静态成员,按照上述代码,则需Test.Test1 t=new Test.Test1();t.getTest1()。
具体的应用,兄弟你可以去研究下google protocol buffer的架构,它自动生成的java代码有很多都是通过静态内部类来实现的。