首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匿名课程的期末考试?

匿名课程的期末考试?
EN

Stack Overflow用户
提问于 2018-09-20 18:54:20
回答 1查看 108关注 0票数 0

我还有一个问题要问匿名班的期末考试。

在匿名类中,访问定义匿名类的类的属性和方法。

访问定义匿名类的方法的局部变量,条件是它们是最终变量。这是因为当方法完成时局部变量将不再存在。

代码语言:javascript
复制
package a;

public class A {

private int i = 4;

public void meth() {
    System.out.println("will not use");
}

public void meth2() {
    int j = 4;
    final int k = 3;

    A a = new A() {
        public void meth() {
            System.out.println("i-4 is " + (i - 4));   
            System.out.println("j-4 is " + (j - 4));   
            System.out.println("k-4 is " + (k - 4));  
        }
    };
    a.meth();

}

public static void main(String st[]) {
    A a = new A();
    a.meth2();
  }
}

结果如下:运行: i-4是0 j-4是0 k-4是-1。

在上面的例子中,........i可以访问所有变量和方法?但是,为什么它说只能最终和定义在子类,变量将不再存在,没有final。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-24 22:24:31

我假设您使用的是Java 8或更高版本。在Java8和更高版本中,匿名类可以访问“实际上是最终的”局部变量,即它们没有被显式声明为final,但从未分配给它们,因此它们有资格被声明为final。局部变量j实际上是最终变量,因为它从未在初始化后分配给它,所以假设这是8+,您可以在匿名类中使用它。变量i是一个实例变量,因此它是通过A.this隐式访问的,因此i是否是最终变量并不重要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52431528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档