心得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
}
}
- 基于上面的现象,可以理解为:非静态内部类是外部类的一部分,而静态内部类与外部类相对独立(既:调用时,不需要有外部类即可有静态内部类)。
- 此外,静态内部类和外部类以外的类的区别在于: ??不关心。。
- 因此,当外部类需要多个数据独立的内部类时(比如: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++;
}
}
}
}