美文网首页
匿名内部类里传过来的外部类中基本数据类型的变量的值的原因

匿名内部类里传过来的外部类中基本数据类型的变量的值的原因

作者: 雨景江水 | 来源:发表于2024-03-01 15:44 被阅读0次

https://blog.csdn.net/qq_22343483/article/details/100730115

https://blog.csdn.net/weixin_55038914/article/details/126541724

一.

  1. 非静态内部类是可以修改外部类属性的值的
    public class Test1 {

    public String name = "abc";

    public class Inner {
    public Integer ager = 11;

     public void t1() {
         name = "bbb";
         System.out.println(name);
     }
    

    }
    }

非静态内部类是拿不到外部类的局部变量的,所以就不存在不能修改外部类的局部变量的值的情况

  1. 只有匿名内部类使用基本类型的局部变量会出现这种问题
    public class Test2 {
    public static void main(String[] args) {
    int a = 1;

     Thread thread = new Thread() {
         @Override
         public void run() {
             a = 2;   //编译报错
         }
     };
    

    }
    }

  1. 引用类型不会报错,因为引用类型的变量创建是在堆里面,方法结束,并不会消失

public class Test2 {
public static void main(String[] args) {
final ArrayList<Integer> objects = new ArrayList();
objects.add(1);
objects.add(2);
objects.add(3);

    Thread thread = new Thread() {
        @Override
        public void run() {
            for (int i = 0; i < objects.size(); i++) {
                System.out.println(objects.get(i));
            }

            objects.add(11);   //不会编译报错

            for (int i = 0; i < objects.size(); i++) {
                System.out.println(objects.get(i));
            }

        }
    };

    thread.start();


}

}

相关文章

  • Java内部类

    代码中包含成员内部类、内部类的同名变量访问、局部内部类、局部内部类final、匿名内部类

  • 为什么内部类中访问局部变量,局部变量需要final修饰

    java内部类 原因是:因为局部变量和匿名内部类的生命周期不同。 匿名内部类是创建后是存储在堆中的 而方法中的局部...

  • 五组管理

    异常 空指针原因:new出的对象是否存在; 监听:使用窗口、内部类、匿名内部类、方法监听 内部类继承外部类的变量:...

  • 匿名内部类中使用的局部变量设置为final

    匿名内部类不能访问外部类方法中的局部变量,除非变量被声明为final类型 1. 这里所说的“匿名内部类”主要是指在...

  • 内部类,对象包装及装箱拆箱

    内部类,是在类中定义一个类,内部类分为静态和局部内部类,匿名内部类等,类中的八种基本数据类型并不是对象。 内部内主...

  • 匿名内部类问题

    匿名内部类访问的外部类局部变量为什么要用final 修饰,jdk8为啥不需要了? 匿名内部类访问的外部类局部变量为...

  • Java匿名内部类或者闭包访问外部(局部)变量,为何需被标志为f

    原因是:因为局部变量和匿名内部类的生命周期不同。 匿名内部类是创建后是存储在堆中的,而方法中的局部变量是存储在Ja...

  • Java 内部类、静态内部类、方法内部类(未完待续)

    内部类 什么是内部类?内部类其实就是在一个类中创建的类。内部类有四种: 成员内部类 静态内部类 局部内部类 匿名内...

  • java内部类

    开篇问题 为什么需要内部类? 为什么内部类,会持有外部类的引用? 为什么匿名内部类使用到外部类方法中的局部变量时需...

  • Java 内部类

    内部类包括成员内部类、方法内部类、*静态内部类、匿名内部类*。 内部类的作用 由于内部类的实现和外部类没有关系,内...

网友评论

      本文标题:匿名内部类里传过来的外部类中基本数据类型的变量的值的原因

      本文链接:https://www.haomeiwen.com/subject/kimogdtx.html