心得1

  1. 静态内部类 和 非静态内部类 的区别在于,前者可以绕过外部类直接构造,而后者不行
public class Outer {
	static class StaticInner {}
	class Inner{}
	public static void main(String[] args) {
		new Outer.StaticInner();
		//new Outer.Inner(); // 这样写会报错
		new Outer().new Inner(); //需要先new Outer,才能new Inner
	}
}


  1. 基于上面的现象,可以理解为:非静态内部类是外部类的一部分,而静态内部类与外部类相对独立(既:调用时,不需要有外部类即可有静态内部类)。
  2. 此外,静态内部类和外部类以外的类的区别在于: ??不关心。。
  3. 因此,当外部类需要多个数据独立的内部类时(比如:LinkedList和Node),适合使用静态内部类。

重点:


这个文章→《从源码角度彻底搞懂LinkedList》通过LinkedList的Note理解静态内部类的优点:https://blog.csdn.net/xfhy_/article/details/80355028

静态内部类简介:https://blog.csdn.net/czh500/article/details/83876425

心得2

有时候,内部类需要静态,是因为有<mark>静态方法需要调用</mark>它

public class Demo_geni {
	
	static int  i = Q.i;
	static class Q{
		static  int i ; 
	}
}

心得3

或者它有静态属性

package cn.edut.com.tarena;

import org.junit.Test;

public class Test2 {
	@Test
	public void test001() {
		new T1().start(); 
		while (true) {
			int t = T1.get();
			if(t%2==1) {
				System.out.println(t);
				System.exit(0);
			}
		}
	}
	
	static class T1 extends Thread{
		static int i ;
		public static int  get() {
			return i;
		}
		@Override
		public void run() {
			while (true) {
				i++;
				i++;
			}
		}
		
	}
}