今天笔试遇到的试题,一下子把我打得措手不及。
想问下大神,这种有没有实际运用场景的。
public class Test {
public int test() {
// 把类C定义成局部变量
class C{
public int num = 1;
}
C c = new C();
return c.num;
}
public static void main(String[] args) {
// 把类B定义成局部变量
class B {
public int n = 3;
}
Object o = (Object) new B();
B b = (B) o;
System.out.println(b.n);
System.out.println(new Test().test());
}
}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
在方法中有两种方式定义类:
题主说的就是局部内部类,在使用上和匿名内部类效果上是一样的,我想大多数人更倾向于使用匿名内部类。它们有如下特点:
能访问方法中的final变量
外部包括本类中的其他方法都是不可见的
实际开发中最常见的使用方式,就是实现Runnable了。
延迟初始化占位类,Java Concurrency in Practice有讲。主要作用就是延迟初始化+安全发布。
延迟初始化+安全
实际应用中,可以用作json解析么。
这是内部类吧……前几楼的说法不太懂
随便百度的内部类详解
题主的栗子在这个详解中是第4点,方法内的内部类,最下面也有说为什么要用内部类
内部类方便私有化,安全,而且使外部代码简洁。
内部类是面向对象的闭包
私有静态内部类, 只有当有引用时, 该类才会被装载,就是上面说的延迟加载啦。。。