小弟刚接触java,问一个小问题?外部类成员位置访问静态内部类的非静态成员,怎么访问? 小弟刚接触java,问一个小问题?外部类成员位置访问静态内部类的非静态成员,怎么访问? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你需要创建静态内部类的对象,才能访问静态内部类的非静态成员。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代码有很多都是通过静态内部类来实现的。 任何非静态成员都属于对象,而不是类。因此你想访问这个内部类的非静态成员,必须创建内部类对象。内部类也是一种属性,他是静态的,那么他就属性类,这里内部类是静态的,他术语外部类,而不是外部对象。因此可以通过这样访问:OutClass.StaticInerClass staticInerObject = new OutClass.StaticInerClass();//获得静态内部类对象systerm.out.println(staticObject.ordinaryProperty.toString());打印内部类的非静态成员 new一个该静态类部类的对象就可以访问。 是不是静态类的非静态成员是private java的对象串行化,一个文件只能保存一个对象吧,不能保存多个对象? 如何将数据库中的信息写入到16进制文件以减小其占用空间 JTextArea中添加滚动条 ??求助:响应Swing窗口关闭事件的解决方法 如何判断一个java字符串中是否含有半角字符? 关于Method类的getDeclaredMethods方法的问题 面試題,你會嗎? 如何调用重写的paint方法,在线等 只已知一个InputStream is = getStream();请问如何知道is究竟有多少size ? java反射访问私有方法 求将下边C++的CRC校验代码转换成java格式的? 求解答!!!!!
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代码有很多都是通过静态内部类来实现的。
因此你想访问这个内部类的非静态成员,必须创建内部类对象。内部类也是一种属性,他是静态的,那么他就属性类,这里内部类是静态的,他术语外部类,而不是外部对象。因此可以通过这样访问:OutClass.StaticInerClass staticInerObject = new OutClass.StaticInerClass();//获得静态内部类对象
systerm.out.println(staticObject.ordinaryProperty.toString());打印内部类的非静态成员