关于在静态方法中访问非静态内部类的问题

转载 2006年06月23日 17:29:00
public class Outer{
public String name = "Outer";
public static void main(String argv[]){
//Inner myinner = new Inner(); //直接用这句话创建会编译错误
Outer myouter=new Outer(); //先创建外部类的对象
Outer.Inner myinner=myouter.new Inner();
myinner.showName();
}//End of main
//下面这段代码用来测试这种n烦的办法
public void amethod(){
Outer myouter=new Outer();
Outer.Inner myinner=myouter.new Inner();
myinner.showName();
}
//非静态方法访问非静态内部类
private class Inner{
String name =new String("Inner");
void showName(){
System.out.println(name);
}
}//End of Inner class
}
在非静态方法访问非静态内部类直接创建该内部类的对象:new Inner().showName();当然也可以采取这种n烦的办法假设private class Inner改成static private class Inner, 那么在静态方法中访问静态内部类也是直接创建该内部类的对象,即Inner myinner = new Inner(),或者Outer.Inner myinner = new Outer.Inner()也行得通,可见这种n烦的方法在上面三种情况下都是可以用的。

Java内部类(3):非静态内部类为什么不能有静态成员变量和静态方法。

首先要明白一下三点: static类型的属性和方法,在类加载的时候就会存在于内存中。 要想是用某个类的static属性和方法,那么这个类必须要加载到虚拟机- 中。 非静态内部类并不随外部类一起加载...
  • liu_shi_jun
  • liu_shi_jun
  • 2017年07月10日 18:39
  • 255

类中的内部类(静态、非静态、私有)中方法(静态、非静态)的调用

访问类中内部类中的方法的两种方法: 方法1、class OuterInnerClass { public static void main(String[] args) { Ou...
  • u010698072
  • u010698072
  • 2016年07月31日 22:40
  • 228

java中静态方法调用非静态成员变量、非静态方法

public class Circle { private double radius = 1.0; double getAre() { return radius * radi...
  • ly890700
  • ly890700
  • 2017年03月27日 13:32
  • 736

非静态内部类为什么可以访问外部类的静态成员

非静态内部类对象寄生于外部类对象,inn调用test()方法时,知道自己调用的是它寄生的对象所属类的类成员; 在阶段一:类加载的时候没有创建外部类对象,但是方法是知道要调用的是外部类的类成员,已经确定...
  • jing_bufferfly
  • jing_bufferfly
  • 2016年02月24日 23:38
  • 1500

避免使用非静态内部类,这会导致Context泄露

【转载:http://www.cnblogs.com/kissazi2/p/4121852.html】 思考下面代码 1 public class SampleActivi...
  • u201011221
  • u201011221
  • 2016年05月19日 16:29
  • 994

为什么不能从静态的方法里调用非静态的方法或变量

程序最终都将在内存中执行,变量只有在内存中占有一席之地时才能被访问。 类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所...
  • l18649805795
  • l18649805795
  • 2015年10月07日 00:17
  • 3224

Java非静态内部类为什么不能有静态成员

对于java类加载顺序我们知道,首先加载类,执行static变量初始化,接下来执行对象的创建,如果我们要执行代码中的变量i初始化,那么必须先执行加载OuterClass,再加载Innerclass,最...
  • caiwencongwyj
  • caiwencongwyj
  • 2015年05月14日 00:18
  • 1576

为什么静态方法不能直接访问非静态成员?

static成员是在JVM的CLASSLOADER加载类的时候初始化的,而非static的成员是在创建对象,即new 操作的时候才初始化的;类加载的时候初始化static的成员,此时static 已经...
  • sunzhifeng1989
  • sunzhifeng1989
  • 2014年02月19日 12:46
  • 5528

java 内部类为什么不能用静态方法

java 内部类为什么不能用静态方法非static的内部类,在外部类加载的时候,并不会加载它,所以它里面不能有静态变量或者静态方法。 static类型的属性和方法,在类加载的时候就会存在于内存中。 要...
  • zhaodedong
  • zhaodedong
  • 2016年10月24日 14:22
  • 3628

java静态方法中调用内部类

有时候我们在写一些外部接口程序的时候使用静态方法。在使用静态方法的时候,如果业务比较复杂需要用到内部类。但是第一次我碰到了一个编译错误:No enclosing instance of type Ac...
  • wficeboy
  • wficeboy
  • 2010年06月24日 20:21
  • 5228
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于在静态方法中访问非静态内部类的问题
举报原因:
原因补充:

(最多只允许输入30个字)