java 外部类静态方法访问内部类
2012-07-11 10:46
211 查看
public class TestLinkedList { public static void main(String[] args) { TestLinkedList ls = new TestLinkedList(); List<IntModel> list = new LinkedList<IntModel>(); for (int i = 10; i > 0; i--) { list.add(ls.new IntModel(i)); } } class IntModel{ int i = 1; public IntModel(int i){ this.i = i; } @Override public String toString() { return Integer.toString(i); } } }
看代码中list.add()方法必须初始化外部类自后才可以用new初始化内部类普通的内部类对象隐含地保存了一个引用,指向创建它的外围类对象。
所以要在static方法(类加载时已经初始化)调用内部类的必须先创建外部类。
下面在说下嵌套类:如果你不需要内部类对象与其外围类对象之间有联系,那你可以将内部类声明为static。这通常称为嵌套类(nested class)。想要理解static应用于内部类时的含义,你就必须记住,普通的内部类对象隐含地保存了一个引用,指向创建它的外围类对象。然而,当内部类是static的时,就不是这样了。嵌套类意味着:
1. 要创建嵌套类的对象,并不需要其外围类的对象。
2. 不能从嵌套类的对象中访问非静态的外围类对象。
(Thinking in java)
相关文章推荐
- Java基础,外部类能够访问内部类的私有静态字段。
- JAVA基础初探(四)JAVA封装、包的概念及使用、访问修饰符、this关键字、内部类(成员,静态,方法,匿名)
- Java中外部类访问内部类的方法
- 内部类访问外部类的变量必须是final吗,java静态方法中不能引用非静态变量,静态方法中不能创建内部类的实例
- 关于java 中 classname.new classname2();的写法 其实是外部类静态成员对内部类的访问
- Java 虚拟机内部类静态字段的初始化与访问
- 【Java】内部类访问的外部变量定义成final (数据保持一致,外部修改后无法通知内部,编译的时候会通过构造方法传进来) Java内部类一般访问不了外部变量
- 基于Java中对域和静态方法的访问不具有多态性(实例讲解)
- JNI/NDK开发指南(六)——C/C++访问Java实例方法和静态方法
- 深入理解为什么Java中方法内定义的内部类可以访问方法中的局部变量
- java静态方法中不能创建内部类对象
- JAVA中内部类访问外部类成员
- Java:内部非静态类访问外部类成员的方法
- java中的方法,静态方法,实例方法,构造方法,自定义方法,以及修饰符访问
- java 基础 面向对象(多态中的成员访问特点之静态成员成员方法)
- C/C++ 访问 Java 实例方法和静态方法
- JNI/NDK开发指南(六)——C/C++访问Java实例方法和静态方法
- java 内部类为什么不能用静态方法
- java(非)静态方法,(非)静态外部类访问静态属性总结
- 深入理解为什么Java中方法内定义的内部类可以访问方法中的局部变量(转)