java - 静态内部类与非静态外部类
问题描述
为什么在 Main.class 中实例化一个 Foo 类(它的内部类)我必须用 static 关键字指定它,但是如果我将这个类作为外部类,那么没有'static'是可能的?
public class Main {
public static void main(String[] args) {
Foo foo = new Foo();
}
// class Foo { // to make it work I have to add 'static'
// }
}
但如果 Foo.class 不是 Main.class 的内部类,它可以工作。
public class Main {
public static void main(String[] args) {
Foo foo = new Foo();
}
}
class Foo {
}
解决方案
如果您将该类声明为非静态内部类,则它属于外部类的一个实例。在您的静态主方法中,您没有实例(因为该方法是静态的),因此您不允许访问该类。
如果将其声明为外部类,则 Foo 类只是可以从静态和非静态方法访问的普通类,因为它不再属于外部类的实例。
推荐阅读
- android - 屏幕关闭时,Android 10 会阻止网络请求和 GPS 呼叫
- sql - Databricks:如何在 %SQL QUERY 中获取集群标签
- c++ - 如何编写一个输入和输出都是 std::variant 的函数
- python - Selenium 按类名查找元素返回错误信息
- r - 通过 R 中的两个匹配列连接两个数据集
- amazon-web-services - Route53 更改尚未在 AWS lambda 中生效
- javascript - Selenium JSExecutor - 从 Amcharts 条形气泡中获取价值
- android - 如何使用 FCM + 数据消息从后台打开 Flutter 应用程序?
- php - 建立多维数组
- python - 定义一个函数 myfunc ,它接受任意数量的参数,并返回一个列表,其中只包含那些偶数的参数