小弟刚接触java,问一个小问题?外部类成员位置访问静态内部类的非静态成员,怎么访问?

houselujia 2013-02-14 04:31:02
小弟刚接触java,问一个小问题?外部类成员位置访问静态内部类的非静态成员,怎么访问?
...全文
316 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
额。。原来是这样
student_2008 2013-03-02
  • 打赏
  • 举报
回复
是不是静态类的非静态成员是private
微风飘过 2013-02-28
  • 打赏
  • 举报
回复
new一个该静态类部类的对象就可以访问。
hh19871210 2013-02-27
  • 打赏
  • 举报
回复
外部内访问 非静态内部类成员需要先建立对象
呼啸 2013-02-17
  • 打赏
  • 举报
回复
任何非静态成员都属于对象,而不是类。 因此你想访问这个内部类的非静态成员,必须创建内部类对象。内部类也是一种属性,他是静态的,那么他就属性类,这里内部类是静态的,他术语外部类,而不是外部对象。因此可以通过这样访问:

OutClass.StaticInerClass staticInerObject = new OutClass.StaticInerClass();//获得静态内部类对象
systerm.out.println(staticObject.ordinaryProperty.toString());打印内部类的非静态成员
zhuxuanzhu 2013-02-14
  • 打赏
  • 举报
回复
你需要创建静态内部类的对象,才能访问静态内部类的非静态成员。
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代码有很多都是通过静态内部类来实现的。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧