java - 为什么匿名类在 Java 中不能有静态成员(最终成员除外)?
问题描述
匿名类不能有任何静态成员,除了那些是常量的。 静态成员属于一个类而不是单个实例。因此,在匿名类中应该允许静态成员,因为该类不能有多个实例。
解决方案
as the class cannot have multiple instances.
肯定可以的!
现场示例:
import java.util.ArrayList;
import java.util.List;
public class AnonymousTest {
public static void main(String[] args) {
List<Runnable> runnables = new ArrayList<>();
for (int i = 0; i < 3; i++) {
final int id = i;
runnables.add(new Runnable() {
@Override
public void run() {
System.out.println("Hello ! " + id);
}
});
}
runnables.forEach(System.out::println);
}
}
输出 :
AnonymousTest$1@58372a00
AnonymousTest$1@4dd8dc3
AnonymousTest$1@6d03e736
如您所见, AnonymousTest 可以有许多实例!这里我们有三个不同的。
匿名类的一个约束是它们必须在创建它们的实例的生命周期之后存在。所以,他们需要复制所有外部变量,这就是为什么你需要它们最终。
推荐阅读
- r - 使用 react-ace 突出显示 R 语言语法
- c++ - 仅在每 0.1 秒调用一次的循环内执行一次函数 c++
- python - Django将2个数值之间的范围()渲染为float而不是模板中的int
- android - 如何在不覆盖当前数据的情况下在 Firebase 中保存数据?
- ruby-on-rails - Simple Form 非模型表单和 i18n
- javascript - 使用带有ng重复的角度js自动选择单选按钮选择
- html - Bootstrap 4中另一个圆圈内的圆圈内水平和垂直居中的图像
- codeigniter - 为什么在 .htaccess 中启用 SSL 后我的网站加载缓慢?
- python - pythonify 或改进 python 参数验证
- angular - 在角度高图中将类名添加到系列数据